各位老大,过来看看那个SQL语句性能高

mrfinger 2010-07-14 06:52:33
这是第一个
SELECT 
id
FROM
b,
(SELECT userid,pageid FROM user_access ua
UNION
SELECT userid,pageid FROM user_page )
a
WHERE
b.from_id = a.pageid AND
b.type = 1 AND
b.from_id IN (12508,12465) AND
b.userid = a.userid AND
b.`status` = 0


这是第二个
SELECT 
id
FROM
b
WHERE
b.type = 1 AND
b.from_id IN (12508,12465) AND
b.userid IN (
SELECT userid FROM user_access ua WHERE ua.pageid = b.from_id
UNION
SELECT userid FROM user_page WHERE pageid = b.from_id
) AND
b.`status` = 0


...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋韩 2010-08-30
  • 打赏
  • 举报
回复
最好少用in 、or
minitoy 2010-07-19
  • 打赏
  • 举报
回复
b.type = 1 AND
b.from_id IN (12508,12465) AND
b.`status` = 0
把这些条件都放到括号里面去
mrfinger 2010-07-15
  • 打赏
  • 举报
回复
ACMAIN_CHM:帮帮分析一下,谢谢
mrfinger 2010-07-15
  • 打赏
  • 举报
回复
第一个SQL语句
explain结果
1 PRIMARY <derived2> ALL \N \N \N \N 402 Using where
1 PRIMARY pw ALL \N \N \N \N 1357 Using where
2 DERIVED ua index \N PRIMARY 8 \N 153 Using index
3 UNION user_page index \N user_page_map_key 8 \N 249 Using index

第二个SQL语句
explain结果
1 PRIMARY pw ALL \N \N \N \N 1357 Using where
2 DEPENDENT SUBQUERY ua eq_ref PRIMARY PRIMARY 8 diitest.pw.from_id,func 1 Using index
3 DEPENDENT UNION user_page eq_ref user_page_map_key user_page_map_key 8 func,diitest.pw.from_id 1 Using index

show index from b
的结果
b 0 PRIMARY 1 id A 1357 \N \N BTREE
show index from user_access
的结果
user_access 0 PRIMARY 1 pageid A \N \N \N BTREE
user_access 0 PRIMARY 2 userid A 153 \N \N BTREE

ACMAIN_CHM 2010-07-15
  • 打赏
  • 举报
回复
create index xxx1 on b (from_id,type,status,id);

SELECT id
FROM b
WHERE
b.type = 1 AND
b.from_id IN (12508,12465) AND
(exists (select 1 from FROM user_access WHERE pageid = b.from_id) or
exists (select 1 from FROM user_page WHERE pageid = b.from_id)) and
b.`status` = 0

paula2008 2010-07-15
  • 打赏
  • 举报
回复
从结果上看 是第二种吧,
mrfinger 2010-07-15
  • 打赏
  • 举报
回复
up啊
ACMAIN_CHM 2010-07-14
  • 打赏
  • 举报
回复
show index from b
show index from user_access

explain SELECT ...

贴出来分析一下。
dingyanwei 2010-07-14
  • 打赏
  • 举报
回复
据说用in不如用exsits

56,677

社区成员

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

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