mysql 联表查询效率问题

selinakiss 2014-01-13 04:30:54
SELECT COUNT(cc.Id) FROM tCardConsumeHistory cc,tCinema c,tCity t ,tCardJifen j WHERE cc.cinemaId=c.ID AND t.ID=c.CityID AND j.CardNum=cc.CardNum AND t.id IN(10) AND cc.Date BETWEEN '2013-11-29' AND '2014-01-13 23:59:59'SELECT COUNT(cc.id) FROM (SELECT cc.id FROM tCardConsumeHistory cc WHERE DATE BETWEEN '2013-11-29' AND '2014-01-10 23:59:59')cc,tCinema c,tCity t,tCardJifen j WHERE cc.cinemaId=c.ID AND t.ID=c.CityID AND j.CardNum=cc.CardNum AND t.id IN(10)DATE 上建有索引上面哪个效率更高呢
EXPLAIN 第一个结果
id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t const PRIMARY PRIMARY 4 const 1 Using index1 SIMPLE cc ALL CardNum,date \N \N \N 443926 Using where1 SIMPLE c eq_ref PRIMARY PRIMARY 4 cc.cinemaId 1 Using where1 SIMPLE j eq_ref CardNum CardNum 152 cc.CardNum 1 Using index

EXPLAIN 第二个结果
id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY t const PRIMARY PRIMARY 4 const 1 Using index1 PRIMARY <derived2> ALL \N \N \N \N 24298 1 PRIMARY c eq_ref PRIMARY PRIMARY 4 cc.cinemaId 1 Using where1 PRIMARY j eq_ref CardNum CardNum 152 cc.CardNum 1 Using index2 DERIVED cc range date date 4 \N 46468 Using where

EXPLAIN结果到底怎么看,主要看哪几个关键字段???
...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2014-01-13
  • 打赏
  • 举报
回复
分别多执行几次 哪个快就是哪个效率高
selinakiss 2014-01-13
  • 打赏
  • 举报
回复
1。SELECT COUNT(cc.Id) FROM tCardConsumeHistory cc,tCinema c,tCity t ,tCardJifen j WHERE cc.cinemaId=c.ID AND t.ID=c.CityID AND j.CardNum=cc.CardNum AND t.id IN(10) AND cc.Date
BETWEEN '2013-11-29' AND '2014-01-13 23:59:59'

2.SELECT COUNT(cc.id) FROM (SELECT cc.id,cc.CardNum, cc.Date,cc.cinemaId FROM
tCardConsumeHistory cc WHERE DATE BETWEEN '2014-01-01' AND '2014-01-10 23:59:59')cc,tCinema c,tCity t,tCardJifen j
WHERE cc.cinemaId=c.ID AND t.ID=c.CityID AND j.CardNum=cc.CardNum AND t.id IN(10)

第一个explain

第二个:

57,062

社区成员

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

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