语句如下:
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多秒,不加又不行,这个语句的意思是查询日期的前天的记录中的前两条,高手帮着优化一下
解决方案 »
- 字符集的问题
- Show Variables Like 'BaseDir%' 求BaseDir的地址值
- 查询各ID最后一条数据,SQL语句该如何写?
- -------急问----mysql 存储过程异常处理------------路人请进------(附企业核心代码)-------------
- Linux下 安装MySQL的问题?
- MySQL远程访问速度为什么慢(使用MyODBC)?
- 急问,mysql里怎样取得刚插入记录的id(自增)号?
- sql 高手请指点这样的select 如何写,要求见贴内,先谢过!
- 菜鸟请教mysql大牛,单张数据表最多存放多少条数据为好?
- 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之类的东西