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 回答
-1

试试这些

  1. 在表的搜索字段上设置索引,然后检查查询执行时间
  2. 不确定这里的 viewCount 是什么,但我猜你是通过子查询得到这个尝试删除订单语句然后检查查询执行时间
于 2016-07-14T11:55:29.397 回答