如果数据小于设定限制,则需要花费太多时间

时间:2016-07-14 11:17:53

标签: mysql sql database mariasql

我有一张200K行的表。当我执行查询时,它花费了太多时间;大约2分钟。

这是我的疑问:

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

helloworld|仅发生在两行中。

我想更改查询,所以如果数据存在的次数超过20次,那么无论出现什么行,都应该返回20行。

如何优化此查询?

2 个答案:

答案 0 :(得分:0)

你不能像写的那样加快速度。

带有LIKE的WHERE子句要求您扫描每一行。它是O(N),其中N =表中的行数#。随着桌子尺寸的增加,它会运行得更慢。

如果您能找到一种方法将该字符串解析为可以INSERT为列和索引的标记,则可以使查询运行得更快。

答案 1 :(得分:-1)

试试这些

  1. 在表格的搜索字段中设置索引&然后检查查询执行时间
  2. 不知道这里的viewCount是什么,但我想你是通过子查询得到这个,试着删除订单声明&然后检查查询执行时间