0

200K 行のテーブルがあります。クエリを実行すると時間がかかりすぎます。約2分。

これは私のクエリです:

SELECT a,b,c,d,@row:="tag1" as tag 
  FROM tableName
 WHERE tagName like "%helloworld|%"
 ORDER BY viewCount desc
  LIMIT 20;

helloworld|2行のみ発生。

クエリを変更したいので、データが 20 回以上存在する場合は、20 行を返す必要があります。

このクエリを最適化する方法は?

4

2 に答える 2

1

書かれているようにこれを高速化することはできません。

LIKE を含む WHERE 句では、すべての行をスキャンする必要があります。これは O(N) です。ここで、N = テーブル内の行数です。テーブルのサイズが大きくなると、実行速度が遅くなります。

その文字列を、列およびインデックスとして挿入できるトークンに解析する方法を見つけることができれば、クエリをより高速に実行できます。

于 2016-07-14T11:21:18.810 に答える