|
发表于 2009-2-14 12:49:42
|
显示全部楼层
本帖最后由 liugehao 于 2009-2-14 13:01 编辑
select ID,title from pp_news order by pubdate desc limit 2370000,30
这条语句来说,要建立pubdate的索引
因为你没有查询条件,其它的索引根本用不到。
select ID,(select title from pp_news b where b.ID=a.ID) as title from pp_news a order by pubdate desc,ID desc limit 230000,100
这个用了个子查询,比那个快的原因肯定是你没做pubdate的索引,而这个用到了一个ID的主键所致。做了PUBDATE的索引后这个应该比第一个要慢的
我是 select ID,title,pubdate,senddate,categoryID from pp_news order by pubdate desc,ID desc limit 230000,100
我建了一个索引 ID,title,pubdate,senddate,categoryID
用不到的查询和排序条件一定不要建立索引,这样你的插入效率会受到影响,而不会提高查询效率。
pubdate 和title要建索引,这是必须的,但是百万条记录对mysql来说已经到极限了,可以考虑换一个了,能达到0.43秒的那个兄弟是高手,你问他吧,我对优化不熟
公司运营系统中的mysql表,上亿条记录的N个,而且还join,速度绝对没有超来半秒的。
首先说明这不是MYSQL的问题,也不是它的极限。虽然我不喜欢MYSQL
没有其它条件情况下,单纯的用SQL来做,在所有的语句中,楼主的第一条语句做好索引是最快的,问题并不在语句本身,而在于索引没有做对。
查询的表的列的数量,列的长度,表的存储类型都会影响查询时间的
|
|