mysql in order by 索引问题

jxzhoujian 发布于 2012/07/09 19:43
阅读 1K+
收藏 0

select * from 动态 where u_id in( 我的好友)  and type in(动态分类) order by create_time desc limit 10 

目前查询速度很慢 

像这种语句怎么优化  

或者是谁能提供下新浪微博相关表的的表结构啊

 

加载中
0
fengyqf
fengyqf
参与where,order的字段加索引,in的数值少一点,多的话,还是改成join,个人习惯,超过20个参与in的值,就尽力改join, 。另外参与in的全是定值时,其效率还是很高速的
0
情天大圣
情天大圣
in的查询本身就很慢,能拆分成=的尽量用=来匹配,然后建立其索引!
0
jxzhoujian
jxzhoujian

引用来自“星星点天灯”的答案

in的查询本身就很慢,能拆分成=的尽量用=来匹配,然后建立其索引!
就是不会知道怎么拆嘛
0
mahone
mahone
可能要  u_id   type  这2个字段加索引吧。。。
0
逝水fox
逝水fox

explain select * from 动态 where u_id in( 我的好友)  and type in(动态分类) order by create_time desc limit 10

看下这个的输出

0
zuiw
zuiw
查询速度慢不一定就是sql语句的问题,首先从其他方面去查看一下,比如:索引,如果数据不是太多那就直接用for,其实循环也不已定就很慢,但是数据量比较大的话就要另当别论了。
0
小荷听雨

首先要看是U_id还是type拖垮你的查询速度,建立相应的索引。还有就是看“我的好友”、“动态分类”数据是否很大,如果数据非常大,那么你完全可以为“我的好友”或“动态分类”建立一张临时表,然后为相应的U_id或者typr字段建立索引,然后用left join on 之类的语句来进行查询。

0
mark35
mark35
两个条件,并且都是IN。 mysql没有索引可用的
mark35
mark35
回复 @游侠 : 也许吧。反正也就那样了
游侠
游侠
回复 @mark35 : 嗯,有多个IN条件也是可以用到索引的。
mark35
mark35
回复 @游侠 : 那应该用的是“idx_uid_type_createat ”这个索引
游侠
游侠
追加: key: idx_uid_type_createat
游侠
游侠
回复 @mark35 : explain select * from test_in where uid in (1,2,3) and type in (3,4) order by create_at desc limit 10; possible_keys: PRIMARY,idx_uid_type_createat 请问这个有没有用到索引?
下一页
0
sxgkwei
sxgkwei

1,order by id desc

2,我的好友 :数据太大,把表拆出来搞成=查询

0
jxzhoujian
jxzhoujian

引用来自“sxgkwei”的答案

1,order by id desc

2,我的好友 :数据太大,把表拆出来搞成=查询

要求是要查看所有好友的动态 怎么拆成等啊 希望能提供个简单的例子
返回顶部
顶部