sql优化:select * from `table1` t1 LEFT t2.id=t1.id order by t2.order 速度很慢

winder 2007-09-29 08:55:54
sql优化:select * from `table1` t1 LEFT t2.id=t1.id order by t2.order 速度很慢
在表连接,进行排序,尤其是使用右表中的字段进行排序,非常慢。
t2.order已经做了索引。
排序与不进行排序速度上相差10倍以上。
通过观察,使用右表字段排序,其执行使用了临时表,而左表排序不需要使用临时表。
有没有好的解决办法,谢谢。
...全文
442 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
zeroleonhart 2007-10-04
  • 打赏
  • 举报
回复
分开查好了,再用php合并数据(如果你需要并且愿意的话)
winder 2007-10-01
  • 打赏
  • 举报
回复
主要问题是:
对关联表中被关联表字段进行排序,就回引起速度很慢,该怎么解决?
或者说有没有办法通过非表关联得方式解决方案?
alex621 2007-10-01
  • 打赏
  • 举报
回复
SELECT * FROM t1,t2 WHERE t1.id=t2.id 行嗎?
winder 2007-10-01
  • 打赏
  • 举报
回复
RIGHT JOIN 不行。
我现在的主要问题是要对两个表中都有字段需要进行排序。
我尝试使用子查询,发现子查询(select id from t1)中的结果记录很大得时候,采用子查询得效率事很低得。
如:select * from t2 where id in (select id from t1)
netstu 2007-09-30
  • 打赏
  • 举报
回复
sql是错误的呀
懒得去死 2007-09-30
  • 打赏
  • 举报
回复
那就用RIGHT JOIN
winder 2007-09-30
  • 打赏
  • 举报
回复
能解释为什么右表排序就慢吗?
Gdj 2007-09-30
  • 打赏
  • 举报
回复
没有办法。只能自己设计数据库的时候避免右表排序。
helloyou0 2007-09-30
  • 打赏
  • 举报
回复
讲的不清不楚,又没有表结构,数据
让人怎么说?
Gdj 2007-09-30
  • 打赏
  • 举报
回复
右表排序无法索引。数据多的话当然就慢了。数据少无所谓。建议看看数据库索引原理。
winder 2007-09-29
  • 打赏
  • 举报
回复
谢谢,上面由于写得是示例,所以,写的不准确。
主要是想表达这么一个意思。
对于表连接得数据排序,速度很慢。
xiaolei1982 2007-09-29
  • 打赏
  • 举报
回复
select * from `table1` t1 LEFT join table2 on t2.id=t1.id order by t2.order
排序本身就耗资源,很难避免
Aylazhang 2007-09-29
  • 打赏
  • 举报
回复
没有见过这样的语句
left ,没有join ; t2.id=t1.id 前没有on ,没有where字句??

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧