语句如下:
select e.id
from ext e where (day('2007-04-05 17:21:32') - day(e.add_time) =1)
and e.clbj !='1' order by e.wfsj desc limit 0,2;加上order by后通过网闸查询MySql要50多秒,不加又不行,这个语句的意思是查询日期的前天的记录中的前两条,高手帮着优化一下
select e.id
from ext e where (day('2007-04-05 17:21:32') - day(e.add_time) =1)
and e.clbj !='1' order by e.wfsj desc limit 0,2;加上order by后通过网闸查询MySql要50多秒,不加又不行,这个语句的意思是查询日期的前天的记录中的前两条,高手帮着优化一下
解决方案 »
- 多行文本如何导入到一个字段中?
- 锁表操作
- 数据库集群问题
- 请高手帮忙看下这个触发器 哪里写错了
- 请问MySQL Community Server和MySQL Enterprise什么区别
- 相同的类型随机取一行数据
- mysql有个字段是DATETIME类型,我可以按月统计么,该怎么写sql语句?
- 新手100分求助:多个表的多字段复制(各字段相互有关联!)到其他的表中去怎么写SQL语句没思路
- [mysql初学者]问一下关于mysql 4.0.18启动的问题
- MySQL-front 和MySQL崩溃
- mysql-gui-tools-noinstall-5.0-r4-win32.zip
- 将MYSQL数据库中的表内容转移到ORACLE数据库中 在线等
select e.id from ext e where (day('2007-04-05 17:21:32') - day(e.add_time) =1)
and e.clbj !='1' order by e.wfsj desc limit 0,2;
看一下执行计划,在需要的地方建立索引.或者交换一下条件位置(看记录的情况)
from ext e where e.add_time<'2007-04-05'- ADD(CURDATE(),INTERVAL 1 DAY)
and e.clbj !='1' order by e.wfsj desc limit 0,2
用这个试试,再在add_time上加索引
于是可写成
SELECT e.id FROM ext e WHERE e.add_time>=CANCAT(CURDATE() - INTERVAL 1 DAY,' 00:00:00') AND e.add_time<=CANCAT(CURDATE() - INTERVAL 1 DAY,' 23:59:59')
AND e.clbj !='1' ORDER BY e.wfsj DESC LIMIT 0,2不知道你的wfsj是什么字段,如果你要查的字段的顺序与add_time或者主键一致,那么最好改一下order by部分。最后用explain查看一下,查询type中至少应该是range类型,而extra中最好不要出现using temp filesort之类的东西