用户
 找回密码
 入住 CI 中国社区
搜索
查看: 21772|回复: 33
收起左侧

[数据库] Hex来~~mysql查询优化问题

[复制链接]
发表于 2008-12-5 05:20:18 | 显示全部楼层 |阅读模式
SQL复制代码
SELECT ID,title FROM pp_news ORDER BY pubdate DESC LIMIT 2370000,30
复制代码
这个查询要全表扫描可费时间了~~

我怎么写SQL语句,才能查询到与上面语句一样的结果?
发表于 2008-12-5 10:07:23 | 显示全部楼层
呵呵,我不是 SQL 优化专家,还是别给你乱出主意了~~
我一般也是这么写,呵呵
 楼主| 发表于 2008-12-7 10:39:14 | 显示全部楼层
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
这样快了些~但也花了0.43秒~

[ 本帖最后由 pp18180058 于 2008-12-7 10:42 编辑 ]
发表于 2008-12-7 15:34:36 | 显示全部楼层
如果你的第二条比第一条快,说明你索引没建好。

索引要建在 ID, title 上,而不是分开建。
 楼主| 发表于 2008-12-9 11:33:18 | 显示全部楼层
我是 select ID,title,pubdate,senddate,categoryID from pp_news order by pubdate desc,ID desc limit 230000,100
我建了一个索引 ID,title,pubdate,senddate,categoryID
其它索引是
title一个
pubdate一个
senddate一个
categoryID一个
isHidden一个
这个建有没有错?

上面那个SQL虽然建了索引,但还是需要2s以上~~~

沧蓝 Help me~~~~~是什么原因?
发表于 2008-12-10 13:49:55 | 显示全部楼层
SELECT ID,title,pubdate,senddate,categoryID
FROM pp_news
WHERE ID in (SELECT ID FROM pp_news ORDER BY pubdate desc,ID DESC LIMIT 230000,100)

这样你试试看,应该会快些,还有,如果230000这个数字比较靠后,排序方式换成ASC也可能会快些
 楼主| 发表于 2008-12-10 22:17:24 | 显示全部楼层
This version of MySQL doesn't yet support 'Limit & IN/ALL/ANY/SOME subquery'

错误提示,我的版本不支持那个查询In~~~我的mysql版本是 5.0.51a

应该别的版本也不支持~~大家帮忙想想~~
发表于 2008-12-12 00:08:46 | 显示全部楼层
pubdate  和title要建索引,这是必须的,但是百万条记录对mysql来说已经到极限了,可以考虑换一个了,能达到0.43秒的那个兄弟是高手,你问他吧,我对优化不熟
发表于 2008-12-12 00:10:20 | 显示全部楼层
原帖由 沧蓝 于 2008-12-7 15:34 发表
如果你的第二条比第一条快,说明你索引没建好。

索引要建在 ID, title 上,而不是分开建。


索引要建在 ID, title 上 这是为何,不太明白
 楼主| 发表于 2008-12-12 09:43:59 | 显示全部楼层
原帖由 tboqi 于 2008-12-12 00:08 发表
能达到0.43秒的那个兄弟是高手,你问他吧,我对优化不熟 ...



晕~~~那是楼主~~

本版积分规则