可能重复:
How to optimize database this query in large database?
SELECT id FROM `user_tmp`
WHERE `code` = '9s5xs1sy'
AND `go` NOT REGEXP 'http://www.xxxx.com/aflam/|http://xx.com|http://www.xxxxx.com/aflam/|http://www.xxxxxx.com/v/|http://www.xxxxxx.com/vb/'
AND check='done'
AND `dataip` <1319992460
ORDER BY id DESC
LIMIT 50
MySQL返回:
显示0到29行(总计50行,查询耗时7.3102秒)[id:2622270 - 2602288]
如果我删除
AND `dataip` <1319992460
MySQL返回
显示0到29行(总计50行,查询耗时0.0859秒)[id:3637556 - 3627005]
如果没有数据,MySQL返回
MySQL返回一个空结果集(即零行)。 (查询花了21.7332秒)
我想要正确的方式来进行查询
感谢名单
答案 0 :(得分:0)
您应该在dataip
列以及当前查询中使用的其他列上有正确的索引。
答案 1 :(得分:0)
我认为第1步应该是对您的查询运行EXPLAIN
,以查看它用于查询的索引(如果有)。
我建议从这里开始:Optimizing Queries with EXPLAIN。
阅读该部分,尝试在查询上运行EXPLAIN
,然后以我们可以理解的格式返回输出 - 以及您可能认为的含义。
祝你好运。