麻辣堂|资源主站|开发论坛|在线手册
首页 Apache Linux Java MySQL 注册帮助 
PHP项目开发组是PHP开发资源网于2007组年建成立的项目开发团队,目前核心开发成员有27人, 项目协作成员8名.下设7个开发组,主要承接大/中型网站项目开发任务。

    由于开发任务较多,人员比较紧张,现面向社会招聘全职或者兼职开发人员,不管你是在校大学生,还是全职开发人员,以及SOHO都可以联系本站,我们可以长期合作,并为您带来丰厚的报酬。
  您现在的位置:PHP开发资源网 > 麻辣堂 > 详细资料
待解决
关于 MySQL 使用复合索引的问题(ORDER BY)
悬赏分:20 - 2007年08月22日

分别建立两个复合索引:

ALTER TABLE tablename ADD INDEX `cid_ttime` ( `cid` , `torder` , `ttime` )

ALTER TABLE tablename ADD INDEX `cid_tviews` ( `cid` , `torder` , `tviews` )


为什么只有第一个生效,后面那个不生效呢?SQL 语句:


使用第一个:

[php]EXPLAIN SELECT *
FROM site_threads t
WHERE 1
AND t.cid =121
ORDER BY torder DESC , ttime DESC
LIMIT 0 , 25[/php]

显示:
table type possible_keys key key_len ref rows Extra
t ref cid,tweekviews_cid,cid_tviews cid 2 const 6 Using where





使用第二个:

[php]EXPLAIN SELECT *
FROM site_threads t
WHERE 1
AND t.cid =121
ORDER BY torder DESC , tviews DESC
LIMIT 0 , 25[/php]

显示:
table type possible_keys key key_len ref rows Extra
t ref cid,tweekviews_cid,cid_tviews cid 2 const 6 Using where; Using filesort




多了个 Using filesort 出来,就是说第二条SQL的 ORDER BY没有使用应有的索引,郁闷中。。。

该怎么办?

提问者:MORR   08-22 12:12
答复
路过。。。顺便帮顶:)
回答者:玉米づ冰冻可乐 - 瓦岗村民 8-22 09:10
我也来回答:
不管你有没有帮助我们,瓦岗寨8万村民将感谢你。。。。。

为防止灌水,您需要计算一道数学题: 答案:
100 + 11 = ? 请将计算结果填在上面

 
[]
©2007 PhpRes.COM