2017-07-29 8 views
0

私の質問はすべてタイトルにあります。なぜ実際にインデックスがクエリを速くするのですか?私はインデックスについての記事とその使い方を読んだ。でも、列にインデックスを作成すると、バックグラウンドで何が起こるか分かりません。インデックスはどのように速度を速くするのですか?

行を並べ替えますか?そうですか?ご存じのように、2つの列に複合インデックスを作成すると、クエリの速度が4 secから0.04 secに減少しました。

とにかくインデックスを作成するときに何が起こるかを理解することに興味がありますか?パフォーマンスにどのように役立ちますか?

+2

は、データベース管理者サイトで[この記事を参照してくださいhttps://stackoverflow.com/questions/1108/how-does-database-indexing-work –

+2

でかいま見を取るに役立つかもしれない

](https://dba.stackexchange.com/questions/73081/mysql-how-index-speed-up-query-execution)、Googleはウェブ上のすべてのページのインデックスであるため、質問をする前にそれを使用する必要がありますここに – RiggsFolly

+1

[データベースのインデックス作成の仕組み]の複製がありますか?(https://stackoverflow.com/questions/1108/how-does-database-indexing-work) – Isac

答えて

1

50レコードのテーブルを取るとインデックスがありません。

あなたは49番目のレコードを照会することもできますし、あなたが入力したときにバックグラウンドで何が起こる

select * from <myTable> where Id='49' 

は、すべてのページまたはすべての行が反復してチェックIDの行が49番目であるかどうか、などされていますそれが49日に着陸するとすぐに、画面上にその行がプッシュされます。ここで留意すべき点は、反復されたすべての行が最初にメモリにプルされ、最終結果が画面にプッシュされることです。

ID列にインデックスを追加するとどうなりますか? ID値とそれぞれの行アドレスを格納する別のテーブルが作成されます。 IDに基づいてクエリを実行すると、特定のIDの行アドレスがすぐに見つけられメモリに格納され、必要なものに応じて「*」やいくつかの列がメモリにフィルタリングされて画面上に表示されます。これはあなた

https://www.youtube.com/watch?v=rtmeNwn4mEg&t=601s

+0

これはあまり良い説明ではありません。 「id」が「49」のレコードの考え方と、同じ順序のレコードがいくつかの順序で「49番目」であるという全く異なるアイデアを混同します。レコードが特定の順序で格納されることは、データベースシステムの本質的な機能ではありません。 –

+0

私はあなたのポイント@HighPerformanceMarkを理解しましたが、始めに50行のテーブルを挙げました。そして、私はちょうどそれらの行で簡単な例を挙げました。次回はこれより良い例を与えることができます –

関連する問題