多くの PHP 開発者と同様に、私が最初に動的 Web サイトを構築し始めたとき、比較的単純なデータ構造を使用しました。確かに、PHP はデータベースに接続するのに非常に便利です (翻訳者注: PHP には、異なるデータベースに接続するときに統一されたインターフェイスがなく、不便だと考える人もいます。実際、これはいくつかの拡張ライブラリを使用して行うことができます)。必要ありません 大量の設計ドキュメントを参照することでデータベースを構築して使用できます。これが PHP の成功の主な理由の 1 つです。
少し前に、かなり上級のプログラマが私にインデックスとは何なのかと尋ねました。私はとても驚きました。何千人もの開発者 (おそらくほとんどが MySQL を使用している) がいるからです。彼らは顧客向けにいくつかの開発を行ってきましたが、データベースの適切なインデックスを構築する方法についてはあまり知識がなかったので、関連する記事を書くことを思いつきました。
最も一般的なケースは、where 句に現れるフィールドのインデックスを構築することです。説明を容易にするために、まず次のような表を作成します。
CREATE TABLE mytable (id シリアル主キー、
) category_id int null デフォルト 0、
では十分ではありません。クエリ時に次のようなステートメントを頻繁に使用する場合:
SELECT * FROM mytable WHERE category_id=1;
これに対処する最も直接的な方法は、category_id の単純なインデックスを作成することです:
CREATE INDEX mytable_categoryid
ON mytable (category_id) ;
はい、終わりましたか?まだ満足していないのですが、選択基準が複数ある場合はどうすればよいでしょうか?例:
SELECT * FROM mytable WHERE category_id=1 AND user_id=2;
最初の反応は、user_id のインデックスを作成することかもしれません。いいえ、これは最適なアプローチではありません。複数のインデックスを作成できます。
CREATE INDEX mytable_categoryid_userid ON mytable (category_id,user_id); | 私の命名習慣に気づきましたか? 「テーブル名_フィールド1名_フィールド2名」という方法を使います。なぜ私がこんなことをするのかすぐに分かるでしょう。
www.bkjia.com