沧蓝 发表于 2008-12-12 10:29:17

如果去掉 ORDER BY,性能能够提高多少?

另外,刚发布的MySQL 5.1对index的算法优化过了,你可以测试一下看看~

沧蓝 发表于 2008-12-12 10:38:02

另外,5.1新增了table partition的功能,对高数据量(比如楼主的)的数据库应当能有性能上的提高~

pp18180058 发表于 2008-12-13 09:41:19

去掉order by 是0.29s

5.1没试过, 我下载一个试试~~~

pp18180058 发表于 2008-12-13 18:43:31

100 rows fetched in 0,0048s (0.3416s)

0.34s,只快了一点点

pp18180058 发表于 2008-12-13 19:04:34

什么原因呢?

我用SELECT ID,title,pubdate,senddate,categoryID from pp_law where title like '%北京%' order by fbrq desc limit 0,10,才用0,009s
搜索都比 limit 230000,10快30倍

lovewqww 发表于 2008-12-18 11:55:25

1、offset比较小的时候。

select * from yanxue8_visit limit 10,10


   多次运行,时间保持在0.0004-0.0005之间

Select * From yanxue8_visit Where vid >=(

Select vid From yanxue8_visit Order By vid limit 10,1

) limit 10


多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优。这个显然是子查询的原因。


2、offset大的时候。

select * from yanxue8_visit limit 10000,10


   多次运行,时间保持在0.0187左右

Select * From yanxue8_visit Where vid >=(

Select vid From yanxue8_visit Order By vid limit 10000,1

) limit 10


多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。

以后要注意改正自己的limit语句,优化一下mysql了

pp18180058 发表于 2008-12-24 09:55:20

Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 230000,1
) limit 100

一样的呀,也是0.3x 秒~~

visvoy 发表于 2009-1-29 12:31:54

分                  表

liugehao 发表于 2009-2-14 12:40:54

9# tboqi
你不明白那就对了,没见过这么建索引的。

liugehao 发表于 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来做,在所有的语句中,楼主的第一条语句做好索引是最快的,问题并不在语句本身,而在于索引没有做对。

查询的表的列的数量,列的长度,表的存储类型都会影响查询时间的
页: 1 [2] 3 4
查看完整版本: Hex来~~mysql查询优化问题