2016-07-14 38 views
0

我有一张桌子,有2个拉赫(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行其他任何行存在。

如何优化此查询?

+1

运行全表扫描。尝试全文搜索而不是 –

+1

您需要创建带有标签的单独表格,以便在不使用全扫描的情况下进行过滤。 –

+1

一起尝试在'tagName'列全文索引用'MATCH AGAINST',即:'WHERE MATCH(标签名)反对( '的HelloWorld |' IN BOOLEAN MODE)' – mitkosoft

回答

0

你不能像写入那样加速。

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

您可以运行查询,如果你能找到一种方法来解析字符串转换,你可以插入为列和索引标记更快。

-1

尝试这些

  1. 设置索引你的桌子上的搜索领域&然后检查查询执行时间
  2. 不知道什么这里的观看次数,但我猜你是用子查询尝试让这个删除命令语句&然后检查查询执行时间
相关问题