帮忙优化下

剑心永远OK 2011-08-09 03:37:46
select * from (SELECT *
FROM `product_option_value` where option_value_id =3) p1, (

SELECT *
FROM `product_option_value` where option_value_id =4
)p2, (

SELECT *
FROM `product_option_value` where option_value_id =5
)p3
WHERE p1.product_id = p2.product_id
AND p1.product_id = p3.product_id

为什么p1,p2,p3都用不了索引的?
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 876
1 PRIMARY <derived4> ALL NULL NULL NULL NULL 1093 Using where
1 PRIMARY <derived3> ALL NULL NULL NULL NULL 1153 Using where
4 DERIVED product_option_value ref option_value_id option_value_id 4 1093
3 DERIVED product_option_value ref option_value_id option_value_id 4 1152
2 DERIVED product_option_value ref option_value_id option_value_id 4 876

id 1三个都用不到索引..
...全文
77 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
剑心永远OK 2011-08-09
  • 打赏
  • 举报
回复
那么简单的SQL我居然没想到,,看来SQL真的生疏了..结贴~
--小F-- 2011-08-09
  • 打赏
  • 举报
回复
你的是子查询 需要改成连接查询
快溜 2011-08-09
  • 打赏
  • 举报
回复
select * 
from product_option_value p1,product_option_value p2,
product_option_value 3
WHERE p1.product_id = p2.product_id
AND p1.product_id = p3.product_id and p1.option_value_id=3
and p2.option_value_id=4 and p3.option_value_id=5
快溜 2011-08-09
  • 打赏
  • 举报
回复
你放到了临时表里,还怎么用索引?。。。

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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