求助这个sql怎么优化一下 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表,这个没有笔误谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 执行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; 贴出结果 t1、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 |+----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+ 执行计划中的ref都是const 属于很好的计划了所以建议不用再进一步优化 谢谢,是不是这类多条件select的语句最好的优化就是添加适当的索引来解决呢?ps,请问有关于执行计划的好一点的资料吗 创建如下索引。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); 谢谢,这个很好用。请问这些索引为何这么创建?规则有哪些?谢谢这些索引中起作用应该仅是两个。 可以通过explain select ...得到哪个索引被使用了。为什么创建这么多,是因为不知道表中的数据分布是如何。一个一个问楼主的的话,估计得累死,索性可能用到的都创建了,省得麻烦。 MySQL字符集的转换问题 用mysql做统计遇到的一个问题。 mysql如何替换语句中从几到几个字符? select语句中":="的含义 为啥这样的命令还叫输入密码呢? 又是乱码问题 在哪能够下载到一个免安装的mySQL版本,4.X或5.X均可 如何将服务器a里mysql的所有数据导道服务器b中? 删除表的问题!!!!!!! mm.mysql应该放在个目录下呢? 在Tomcat 中 mysql 空间扩展,相关函数需要配置后才能使用吗? 求助 我产品数据库有65万数据,查询起来很慢很慢。 求高手帮忙解决
+----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+
| 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 |
+----+-------------+-------+------+-----------------------------------------+---------------+---------+-------+------+-------------+
ps,请问有关于执行计划的好一点的资料吗
create index x3 on table1 (c4,c3,c2);
create index x2 on table1 (c3,c2,c4);
create index x4 on table1 (c4,c2,c1);
请问这些索引为何这么创建?规则有哪些?谢谢这些索引中起作用应该仅是两个。 可以通过explain select ...得到哪个索引被使用了。为什么创建这么多,是因为不知道表中的数据分布是如何。一个一个问楼主的的话,估计得累死,索性可能用到的都创建了,省得麻烦。