求助这个sql怎么优化一下

NKLoveRene 2014-05-15 01:22:05
SELECT t1.c1, t2.c2 FROM table1 t1, table1 t2 WHERE t2.c2>0 AND t2.c3=1 AND t1.c2=0 AND t1.c4=t2.c4;


都是table1表,这个没有笔误
谢谢
...全文
172 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2014-05-16
  • 打赏
  • 举报
回复
引用 7 楼 NKLoveRene 的回复:
[quote=引用 6 楼 ACMAIN_CHM 的回复:] 创建如下索引。 create index x1 on table1 (c2,c4,c1); create index x3 on table1 (c4,c3,c2); create index x2 on table1 (c3,c2,c4); create index x4 on table1 (c4,c2,c1);
谢谢,这个很好用。 请问这些索引为何这么创建?规则有哪些?谢谢[/quote]这些索引中起作用应该仅是两个。 可以通过explain select ...得到哪个索引被使用了。 为什么创建这么多,是因为不知道表中的数据分布是如何。一个一个问楼主的的话,估计得累死,索性可能用到的都创建了,省得麻烦。
NKLoveRene 2014-05-16
  • 打赏
  • 举报
回复
引用 6 楼 ACMAIN_CHM 的回复:
创建如下索引。 create index x1 on table1 (c2,c4,c1); create index x3 on table1 (c4,c3,c2); create index x2 on table1 (c3,c2,c4); create index x4 on table1 (c4,c2,c1);
谢谢,这个很好用。 请问这些索引为何这么创建?规则有哪些?谢谢
ACMAIN_CHM 2014-05-15
  • 打赏
  • 举报
回复
创建如下索引。 create index x1 on table1 (c2,c4,c1); create index x3 on table1 (c4,c3,c2); create index x2 on table1 (c3,c2,c4); create index x4 on table1 (c4,c2,c1);
NKLoveRene 2014-05-15
  • 打赏
  • 举报
回复
引用 4 楼 benluobobo 的回复:
执行计划中的ref都是const 属于很好的计划了 所以建议不用再进一步优化
谢谢,是不是这类多条件select的语句最好的优化就是添加适当的索引来解决呢? ps,请问有关于执行计划的好一点的资料吗
benluobo 2014-05-15
  • 打赏
  • 举报
回复
执行计划中的ref都是const 属于很好的计划了 所以建议不用再进一步优化
NKLoveRene 2014-05-15
  • 打赏
  • 举报
回复
引用 1 楼 benluobobo 的回复:
执行explain SELECT t1.c1, t2.c2 FROM table1 t1, table1 t2 WHERE t2.c2>0 AND t2.c3=1 AND t1.c2=0 AND t1.c4=t2.c4; 贴出结果
加了一些索引 +----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+ | 1 | SIMPLE | a | ref | idx_c3_c4 | idx_c3_c4 | 3 | const | 18900| Using where | | 1 | SIMPLE | b | ref | idx_c2_c3 | idx_c2_c3 | 8 | const | 1 | Using where | +----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+
ayzen1988 2014-05-15
  • 打赏
  • 举报
回复
t1、t2 的 c4添加索引
benluobo 2014-05-15
  • 打赏
  • 举报
回复
执行explain SELECT t1.c1, t2.c2 FROM table1 t1, table1 t2 WHERE t2.c2>0 AND t2.c3=1 AND t1.c2=0 AND t1.c4=t2.c4; 贴出结果

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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