我有一张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行。
如何优化此查询?
答案 0 :(得分:0)
你不能像写的那样加快速度。
带有LIKE的WHERE子句要求您扫描每一行。它是O(N),其中N =表中的行数#。随着桌子尺寸的增加,它会运行得更慢。
如果您能找到一种方法将该字符串解析为可以INSERT为列和索引的标记,则可以使查询运行得更快。
答案 1 :(得分:-1)
试试这些