PHP 面接の質問 MySQL インデックス
質問:
PRODUCT テーブル (id、名前、価格、数)
SQL コード
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->select * from PRODUCT where price=100
現在、価格フィールドが追加されています インデックス
1. ただし、上記のクエリ速度はまだ非常に遅いです。遅い理由を教えてください。
2. 速度を上げるにはどうすればよいですか?
------ 解決策----------------------
1. 大量のデータに一定の制限を加えます
2. 必須フィールド seletc id、名前などを記述できます
3. 主キーと価格で結合インデックスを作成します
残りは下の階に追加されます
------解決策---------
価格=100のPRODUCTから*を選択
それだけですか?インデックスを追加した後も非常に遅い場合は意味がありません。インデックスは非走査クエリであり、価格が 100 である場所を直接見つけます。データの量が多い場合、クエリは追加しないよりも確実に高速になります。
データベースに価格 100 のデータが大量にありますか?
------解決策---------
------解決策----------------------
価格フィールドはインデックス作成にまったく適していない可能性がありますすべてのフィールドにインデックスを作成できるわけではないため、一部のフィールドを追加するとさらに遅くなります。
------解決策------------------
料金に重複データが多すぎるとクエリ効率が低下する最も可能性が高い。
------解決策---------
このクエリだけの場合、
一意のインデックスではないため遅いです。
データの量が多い場合、基本的にそれを最適化する良い方法はありません。または、レンジ ジョイント インデックスを追加することもできます。価格を選択して間隔を選択し、100
にチェックを入れます