0

lucene、sphinx、solrなどのライブラリを使用せずに検索システムを作成するための最善のアプローチについて質問しました。

人々は、インデックスを作成できる、インデックス専用のテーブルを使用してmysql内でインデックスをエミュレートできる、多くのテーブルを検索するのは良い考えではない、などと言い続けています。インデックスを作成する方がはるかに優れています。インデックスは、単一の構造化データベーステーブル、または私が使用しないスフィンクスやルセンなどの外部エンジンにすることができます。

インデックス作成とは実際にはどういう意味ですか?IDにPRIMARYKEYを割り当てて自動インクリメントする必要があることはわかっています。PRIMARYKEYを使用すると、ID番号が同じにならないようにUNIQUEになります。これらのインデックスは、主キーの横にあるINDEXに直接関連付けられていると言われていますか?

インターネットのどこにも説明が見つからなかったので、誰か助けてくれたらとてもありがたいです。

4

1 に答える 1

0

MySQLは、実際には非常に複雑で強力な文字列解析エンジンです。送信するすべてのデータは、文字列のような値としてファイルに保存されます。MySQLはCに組み込まれており、実行するすべてのクエリを実行するための処理を管理します。

インデックスは、プライマリIDのマッピングとは異なる方法でマッピングされたテーブル内のデータのリストです。インデックスの基本的な目標は、使用しているMySQLエンジンがテーブルをより迅速に検索できるようにすることです。これは、実際には、インデックスを使用して、探しているレコードが存在しないことがわかっているテーブルの巨大なセクションを除外できるためです。主キーはid値のインデックスですが、次のように任意の列にインデックスを作成できます。

CREATE INDEX user_id_index ON meta (user_id);

テーブルには、さまざまな目的で複数のインデックスを設定できますが、それは問題ありません。多くの場合、さまざまな値でテーブルを参照していることに気付くでしょう。また、それぞれのインデックスを作成したい場合もあります。間違った列にインデックスを付けるとクエリの速度が低下する可能性があるため、適切にインデックスを付けることが重要です。何が起こっているのかをよく理解するには、このリンク全体を読む必要がありますが、インデックスは基本的に、テーブルの1つの列を介したルックアップをより迅速に実行できるファイルであることを忘れないでください。

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

于 2012-12-14T21:23:25.830 に答える