黑马程序员技术交流社区

标题: SQL语句优化问题 [打印本页]

作者: 吴淑金    时间: 2012-6-7 09:34
标题: SQL语句优化问题
数据库有张表T_User




idRegName regDate regCount
1 lily2012-12-12 200
2lisa 2012-7-8300
3 tom2012-7-8 200
4 jerry2012-12-21 400

在regCount字段建了索引
以下请优化以下SQL语句,并说明优化点:
1)select RegName,regDate,RegCount from T_User where regCount<>300
2 ) select RegName,regDate,RegCount from T_User where regDate<'2012-12-12'
3)select RegName,regDate,RegCount from T_User where day(regDate)<20 and month(regDate) between 5 and 12
4)select RegName,regDate,RegCount from T_User where regCount+100<400

这是昨天实习招聘的笔试题,求教~~
作者: 王针    时间: 2012-6-7 12:16
是因为语句不规范还是有错误要优化吗?
我觉得<>可以改为!=,易读;'2012-12-12'需要转换成日期类型才有可比性;between...and...改为>=及<=好一点,因为端点值容易让人误解;最后的改为regCount<300明显可以减少一次运算。
不知道是不是这样...
作者: 刘豪    时间: 2012-6-7 15:23
1)select RegName,regDate,RegCount from T_User where regCount<>300
select * from T_User where regCount<>300

2 ) select RegName,regDate,RegCount from T_User where regDate<'2012-12-12'
select *from T_User where regDate<'2012-12-12'

3)select RegName,regDate,RegCount from T_User where day(regDate)<20 and month(regDate) between 5 and 12
select * from T_User where day(regDate)<20 and month(regDate) between 5 and 12

4)select RegName,regDate,RegCount from T_User where regCount+100<400
select * from T_User  where regCount<300

不知道这样行不行,请大家指正。

作者: 吴淑金    时间: 2012-6-7 16:20
刘豪 发表于 2012-6-7 15:23
1)select RegName,regDate,RegCount from T_User where regCount300
select * from T_User where regCount ...

变成Select * 效率不是更低。。。
作者: 吴淑金    时间: 2012-6-7 16:20
王针 发表于 2012-6-7 12:16
是因为语句不规范还是有错误要优化吗?
我觉得可以改为!=,易读;'2012-12-12'需要转换成日期类型才有可比 ...

我也不知道诶。。。哎。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2