2011-11-12 4 views
0

私は、インデックスのパフォーマンスに関する約20のトピックを読んで、まだいくつかの質問を持っている...MySQLのインデックスのパフォーマンス...この単純なテーブルにインデックスを作成する必要がありますか?

  1. はあなたが唯一の約2000行を含むテーブル内のインデックスユーザーID列に勧め、列がありましたID(自動インクリメント)、(SSNのような、ユニークな)ユーザーID、FIRST_NAMELAST_NAMEphone_numし、ユーザーがそのDを選択することで、ログインしたときには、FIRST_NAME、LAST_NAME、すべてのページにphone_numを表示WHERE userid = '123-45-67890'を使用してテーブルからata

  2. 1)と同じ質問ですが、行数は時間と共に増加し、2000をはるかに超える可能性がありますか?

答えて

3

ユーザーがログインしたときには、WHEREユーザーID = '123-45-67890' 絶対に

を使用して、テーブルからそのデータを選択することで、FIRST_NAME、LAST_NAME、すべてのページにphone_numを表示それのために行く、すべての行をスキャンする代わりに、いくつかのシークで十分です。すべてのページでクエリを使用しています。あなたはセッションにそのデータを保存することを考えましたか?

テーブルに多くの書き込みがあると思うときは、インデックスを最小限に保つ必要があります(たとえば、何かを記録しているなど)。ユーザーテーブルでは、ほとんどの場合、多くの読み込みと書き込みがあります。

また、インデックスが有効なクエリを実行する頻度が低く、パフォーマンスが許容範囲内である場合は、インデックスを追加しないことを検討できます。

EXPLAIN SELECT id_person FROM sl_person WHERE username='admin'

+0

ソリッド説明:インデックスを使用して

EXPLAIN SELECT id_person FROM sl_person WHERE username='admin'

:インデックスなし

。 –

関連する問題