3

何百万ものレコードが入力された大きなテーブルで SQL クエリを実行しています。WHERE 条件は一連の LIKE であり、入力をいくつかのテキスト フィールドと比較します。

以下は、さまざまな入力に対してクエリを実行するのにかかる時間です (それぞれ平均 3 ~ 5 回の実行)。

* 'aaaa' : ~3.1 seconds
* 'aaa@' : ~2 seconds
* 'aa@a' : ~9.7 seconds
* 'a@aa' : ~9.7 seconds
* 'aa@a' : ~9.8 seconds

すべてのクエリで同じ数の結果が返されました (12 ~ 13)。これを 'a' の代わりに他の文字 (繰り返しのないものなど) でチェックしたところ、結果は多かれ少なかれ同じでした。

私は何が欠けていますか?

ありがとう

4

1 に答える 1

0

上記のコメントで述べたように、テーブル内のこのデータの分布に関連している可能性が高くなります。テーブルにインデックスを作成してみてください。適切なインデックスとその方法を示すことはできませんが、スキーマなどを投稿していただければ、喜んでお手伝いさせていただきます。

第二に、Likes は決して良いものではありません。アプリケーション コードを改善して、代わりに equals を実行することはできませんか?

于 2012-08-19T10:48:02.900 に答える