さらにMySQLのインデックスを理解するには?あなたが理解しなければならない。この16ポイント!

序文

効率的な運用のためのビルドMySQLのMySQLのインデックスが非常に重要であり、指数が大幅にMySQLのの検索速度を向上させることができます。

合理的な設計と使用MySQLのインデックスがランボルギーニであれば、例えば、インデックスのないMySQLの設計および使用は三輪車ではありませんがあります。

中国の辞書カタログページ(インデックス)アナロジーを取る、我々はすぐに必要な単語を見つけるために、ピンイン、ストローク、および目次(インデックス)の他のラジカルの並べ替えを押すことができます。

サブインデックス別指数と組合せ指数。別のインデックス、すなわち単一の列インデックスを含む、テーブルは、複数の個別のインデックスを持つことができ、これは複合インデックスではありません。組み合わせ指数、すなわち、複数の列を含むインデックス。

あなたは、インデックスを作成するときは、必ずインデックスが(通常はWHERE句の条件など)SQLクエリアプリケーション内の条件であることを確認する必要があります。

実際には、インデックスはまた、エンティティテーブルを記録するために主キーとインデックスフィールド、及びポイントを保持するテーブルです。

上記のインデックスを使用することの利点について話しているが、インデックスのあまり使用は乱用につながります。そのため、インデックスもその欠点があります。それは、テーブルの更新速度が低下する一方、インデックスが大幅なテーブルのINSERT、UPDATE、およびDELETEなど、クエリの速度を増加したものの。あなたがテーブルを更新する場合、MySQLはデータを保存するだけでなく、インデックスファイルについて保存することだけではありませんので。

インデックスファイルのインデックスは、ディスクスペースを占めています。

V2-d9ca43d8853b944b2ffc16439f85f87f_hd.png

1、インデックスが何をしているのですか?

インデックスは、迅速行の列で特定の値を見つけるために使用されます。インデックスを使用しないでくださいあなたは、関連する行を見つけるまで、MySQLは丸太の第1条から開始し、リスト全体を読まなければなりません。テーブルが大きいほど、より多くの時間はそれがかかります。テーブル、クエリインデックス内の列を持っている場合、mysqlは迅速にデータファイルの真ん中を見つけるための位置に到達することができ、すべてのデータを見て必要はありません。Bツリーに格納されているほとんどのMySQLインデックス(PRIMARY KEY、UNIQUE、INDEX、そしてFULLTEXT)。ただ、空間列タイプは、R- treeインデックスを使用して、MEMORYテーブルはまた、ハッシュインデックスをサポートしています。

2、複雑な良い指標、私はどのようにインデックスを理解し、像点の誰より例はありませんか?

はい、あなたはこの辞書を持って前に、データは、書籍のテキストである、ことを想像し、あなたは、CPU、およびインデックスしている、本はディレクトリです

3、より良い指標?

インデックス作成が大幅にほとんどの場合、クエリの効率を向上させることができますが、:

複数のインデックスがより多くのメンテナンスコストを意味するように、変更データ(CRUD)は、インデックスを維持するために必要とされます

より多くのインデックスも(100ページの本、50のカタログがある?)以上のスペースが必要とされることを意味します

あまりにも小さなテーブルには、インデックスが遅くああ:( 2ページのパンフレットを読んで、あなたは最初のディレクトリに移動することができます?)

4、インデックスフィールドの種類の問題

(長さを指定する)、テキストタイプ、インデックスが構築されてもよいです

MyISAMの統合ストレージエンジンのインデックスキーは、1000バイトの長さを超えることはできません

画面に使用し、同じデータ型のカラムインデックスの値を保ちます

5、インデックスのように使用することはできませんか?

以下のように、しかし絶対的に利用できないではない、「XXXX%」インデックスで使用される最小化、

あなたが読んで既成の秩序ある想像発音イディオムイディオム辞書、ディレクトリ、クエリのニーズは、あなたが、言葉(「百分の一」)の先頭に「」というフレーズを見ているであり、あなたはイディオムが含まれている単語を見つけたいです( "%百分の一")

また、同様にオペレータは、インデックスに使用することができます。

<、<=、=、>、> =、BETWEEN、
<>で、いないで、!=则不行

6、どのようなフィールドのインデックスを構築するには適していませんか?

一般的に、彼は小さすぎる可能性がありますどのように(建設指数は適していません(たとえば、性別、タイプのものなど)小さな列の一意の値は?半分は、テーブルの15%以上は、私が必要とのデータの値を避けますインデックスの構築)

(:ちょうどトップ10のインデックスを取るなど)の列は、あなただけの部分インデックスを作成することを選択することができ、長すぎます

(どのくらい?センスと呼ばれる)は非常に頻繁にデータ更新の不適切なインデックス

v2-8a6ac70d7ffc6bb6394685a2f597f078_hd.png

7、クエリが複数のインデックスを使用することができますか?

できません

8、どのようにインデックスを構築するための複数列のクエリ?

各プログラムまたはbをインデックスbは、クエリは、最初のショットAので、一つのインデックスを使用できますか?構築された(最小値との)差別化度の高いです、!もちろん、関節指数は、ABまたはBA、高い正面のものとの間の上述の区別の良好なプログラムであります

9、問題の共同インデックス?

B =「xxx」はない場合どこ=「XXX」(再想像し、これは本のカタログです?)AB共同インデックスを使用することができますので、ほとんどの場合、ABがインデックスがあり、ビルドaにして行くことができませんインデックス付き

10.一般的な状況は、インデックスを使用することはできません何ですか?

"%のXXX"のような

ないで、!=

ここで、列演算関数(例えば、MD5(パスワード)=「XXXX」)

WHEREインデックス= 1 OR A = 10

それ以外の場合は問題ではない、それ以外の場合は、インデックスのクエリに関連するフィールドを使用することは不可能である、引用された値を失わないように覚えて、(電話番号など)文字列型のフィールドの値を保ちます

その

テストモバイル= 13711112222から選択*;

しかし、インデックスは、モバイル分野で使用することはできませんああ(携帯単語のcharまたはvarcharのタイプの場合)

ところで、店舗の電話番号にint型を使用しよう(彼らが望むのはなぜ?!それとも自分の目で確かめてください)はありません  

索引(インデックスを覆う)カバー11は、より高い効率を有します

必要でない場合は、インデックスが必要な値がすべて含まれ、それはちょうどそれらを選択し、他の言葉で、のみ使用する必要があるフィールドを選択し、選択しないようにしてください*

12、NULLの問題

設計テーブル構造がNULLの存在を避けるためにしてNULLインデックスは、存在しないにつながる(-1など、あなたが表現したい、他の方法で、NULL式を?)

v2-145b76b65efedf3226a0783b0e2abaef_hd.png

13、どのようにインデックス情報を表示するには、どのように正確に分析し、インデックスを使用するには?

テーブル名からインデックスを示し; 

......選択を説明。

あなたは特別なエントリー記事を書く時間を見つけることができる別の日を説明し、この前には、Googleを試すことができます

14、自分のシステムではなく、時期尚早な最適化を理解します!

彼らのシステムを知らないほとんどの時間は、システムが真の運搬能力を知らないので、早期の最適化は、非常に迷惑が、絶えず存在する問題となっていました。I種類の公共-hoの[プログラマ]の懸念群れは、PDF文書のデータの100ページを超える2019社のJava顔の質問を終え、記事が内側に更新されますへようこそ、仕上げ材が内側になります。

例:データのテーブルのニュース何千、何百何千回もの毎日のテキスト検索は、ほとんどの時間、私たちはむしろ、人間の脳よりも、すべてのCPUや強力すぎる後、フルテキスト検索を構築するために行ったものよりも、好きに安心することができますもっと

15、小さいケースを共有します。

量ではなく、中小企業局:そこボードを見つけるために友人は、言った:マスターズは、ああ、私はボードは、分析中の10分を費やしたと言うことを見て待ちをあえてしないでください:ヘルプへのマスターは、企業のウェブサイトのオープンボードは微笑ん見ます大(PV 2または300万日)、スタンドアロンサーバー、データの量(100M少ない)、衣替え、荒廃、アウトソーシングを行うにプロジェクトチームを遅すぎるためにつながるべきではないのですか?非現実的!その結果、ボードは、インデックスを追加したことがインデックスフィールドに20分を費やし、世界ので、静かな友人は言った:みんなのもう一つは、少なくとも料、あなただけの30分をアウトソーシング2ワット最適化するため、それはそう、あなたのマスターを持っている、と述べましたそれはそれの最高のレストランの当然の選挙ボードのいずれかになります。それは西洋バーを指すようで、常熟路の地下鉄駅KFCがあなたを待って!

16、最後に:これまでのキーワードSQLインジェクションを忘れないでください

本稿では、MySQLのデータベースプログラムを支援するために設計することを願っています。

遂に

ヨーヨーは、サポートのための記事、感謝を覚えている賞賛のポイントのように、みんなでシェアへようこそ!


おすすめ

転載: blog.51cto.com/14442094/2451674