首页 | PHP资讯 | 技术专栏 | 资源共享 | PHP培训 | PHP职场 | 图书 | PHP ON WIN | PHP圈子
返回列表 回复 发帖

[求助] VeryCD聘PHP工程师提的SQL优化问题,你有好的优化方法吗?

[求助] VeryCD聘PHP工程师提的SQL优化问题,你有好的优化方法吗?

请问如何优化SQL:

[php]select * from t where id in (1,2,3) order by s desc;[/php]

目前大家提出的优化方法:

1. 将 in(1,2,3) 换成 id=1 or id=2 or id=3

2. 将 * 细化

3. id<=3 用个运算...小于或者等于...

4. 将 in(1,2,3) 换成 exists(1,2,3)

希望大家继续讨论.

补充: 像四楼这样没营养的文字,请勿占用资源.

[ 本帖最后由 gxgzres 于 2008-7-17 17:32 编辑 ]
敢想敢做^^
in很占资源。我想我会用id=1 or id=2  or id=3

[ 本帖最后由 saso 于 2008-7-17 22:26 编辑 ]
袜子不好穿,想看大家的意见,请到此贴。http://bbs.phpchina.com/thread-175851-1-1.html
原帖由 saso 于 2008-7-17 17:00 发表
in很占资源。我想我会用id=1 and id=2  and id=3
语句中的and改为or比较正确吧?
敢想敢做^^
没头没脑。。
~
不小心,呵呵。你对了。
袜子不好穿,想看大家的意见,请到此贴。http://bbs.phpchina.com/thread-175851-1-1.html
这个 * 好像也能优化
explain出来的情况
EXPLAIN  SELECT *
FROM `articles`
WHERE id
IN ( 10, 11, 12 )
ORDER BY created_at DESC
Profiling
[ 编辑 ] [ 略过解释 SQL ] [ 创建 PHP 代码 ]



id         select_type         table         type         possible_keys         key         key_len         ref         rows         Extra
1         SIMPLE         articles         range         PRIMARY         PRIMARY         4         NULL         3         Using where; Using filesort
题目就这么一句话的话,我们就可以展开很多联想了
select x1,x2,x3 from t where id=1 OR id=2 OR id=3 order by s desc;
我能想出来的办法了 ...
我是一只小小象~~ 咿呀咿呀哟~~~~
id<=3

它必定是以3结束...

用个运算...小于或者等于...
PHPchina 技术交流群: 14673814
菜鸟学会PHP最快而且有效的方法: 先飞!
FreeBSD+Nginx+PHP+MySQL空间 同创科技
PHPnew Professional PHPnew 助站
返回列表