SELECT * FROM tablea WHERE Able=1 AND (VersionAble='' or VersionAble='$Version') AND VersionUnAble<>'$Version' AND DATE_SUB(NOW(),INTERVAL '00:00:00' HOUR_SECOND)>=ATStart AND DATE_SUB(NOW(),INTERVAL '00:00:00' HOUR_SECOND)<=ATEnd order by AddTime DESC执行次数高的时候每分钟有20多次吧,能优化提高速度么?!
ATStart和ATEnd 是有效时间,基本上没用到
ATStart和ATEnd 是有效时间,基本上没用到
WHERE Able=1
AND (VersionAble='' or VersionAble='$Version')
AND VersionUnAble <>'$Version'
AND NOW()>=ATStart and NOW()<=ATEnd
order by AddTime DESC语句的优化需要更多你表中的信息才能判断。 主要是要根据你表中数据实际的分面来创建一些索引来提高查询速度。需要提供以下信息。
select count(*) from tablea;
select count(*) from tablea WHERE VersionAble='';select count(*) from tablea WHERE VersionAble='$Version'; 的分布估计
select count(*) from tablea WHERE VersionUnAble <>'$Version' 的分布估计
select count(*) from tablea WHERE NOW()>=ATStart and NOW()<=ATEnd 的分布估计
最近讨论优化的好象很多。 建议参考一下。http://dev.mysql.com/doc/refman/5.1/zh/optimization.html#query-speed
7.2. 优化SELECT语句和其它查询http://topic.csdn.net/u/20090531/19/d097093c-987e-440a-b56e-90de9c7d8b4c.html
Mysql的内联接查询优化http://topic.csdn.net/u/20090526/17/639d78ec-e299-40d0-9c8e-8d5b21229405.htmlhttp://topic.csdn.net/u/20090520/16/a96a2e90-a935-4460-837e-e52b4557c519.html
进行比较时间啊,“NOW()>=ATStart and NOW()<=ATEnd”这样可以直接进行对比?!now()的格式是“2009-6-2 09:23:00” ATStart的格式是“09:23:00”“索引字段是哪些?WHERE语句使用字段中,哪些内容比较少?”
ATStart和ATEnd 这两项基本上没有用的吧
现在所使用的tablea中的数据只有不到8条
8条的情况
VersionUnAble <>'$Version' 有6条
Able=1 有5条
VersionAble均为空
ATStart均为00:00:00
ATEnd均为23:59:59一次执行完需要查询3个不同名称的类似表
高峰时候的运行情况是 每分钟有超过20次的执行我考虑到将这个程序商业化,想找各位大侠指点指点不足之处