我想在一个大型数据库的查询中工作

时间:2011-11-01 18:41:48

标签: mysql

  

可能重复:
  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秒)

我想要正确的方式来进行查询

感谢名单

2 个答案:

答案 0 :(得分:0)

您应该在dataip列以及当前查询中使用的其他列上有正确的索引。

答案 1 :(得分:0)

我认为第1步应该是对您的查询运行EXPLAIN,以查看它用于查询的索引(如果有)。

我建议从这里开始:Optimizing Queries with EXPLAIN

阅读该部分,尝试在查询上运行EXPLAIN,然后以我们可以理解的格式返回输出 - 以及您可能认为的含义。

祝你好运。