【百度分享】MySQL 5.1分区技术初探(五)

dubai12 2010-08-11 06:04:46
加精
3.1 单表查询
  从销售记录中找到1999年整年的销售记录有多少条,这个很简单,查询语句如下:
  select count(*) from salaries s where s.from_date between "1999-01-01" and "1999-12-31" ;
  那么对于分区前后的查询性能却有很大的差别:

 通过如上可知,利用分区之后它只需扫描p16分区,访问的记录明显减少,所以性能自然有较大的提升:

无采用分区技术 采用分区技术
3.2 单表查询-BAD Case
  若现在有如下查询:
  select count(*) from salaries s where year(s.from_date)=1999;
  那么它是否能够利用到分区技术呢,答案是否定的。为什么呢,因为分区中的key是s.from_date,而不是year(s.from_date),mysql并不能很智能地判断year是1999的,那么它就是分为p16分区,这个可以通过如下的查询计划可以证实:

也就是其实它访问了所有的分区,所以并没有很好地利用分区功能,将SQL改写如下:
  select count(*) from salaries s where year between '1999-01-01' and '1999-12-31' ;
  则查询计划如下:

可知,书写正确的SQL可以完全表现出两种相差特别大的性能。
...全文
1736 88 打赏 收藏 转发到动态 举报
写回复
用AI写文章
88 条回复
切换为时间正序
请发表友善的回复…
发表回复
寒冰2046 2011-05-24
  • 打赏
  • 举报
回复
我喜欢做实验
terrycsxi 2011-01-17
  • 打赏
  • 举报
回复
很实用
qiezi123 2010-11-30
  • 打赏
  • 举报
回复
不错,有学到一点点东西。
wjbpkt 2010-11-30
  • 打赏
  • 举报
回复
很好,学习了
Coley_1 2010-11-30
  • 打赏
  • 举报
回复
学习路过,太好了
init5 2010-11-29
  • 打赏
  • 举报
回复
好好学习 天天向上
cai45670 2010-11-29
  • 打赏
  • 举报
回复
不错哟,借来用用!
wangrtfp 2010-11-28
  • 打赏
  • 举报
回复
学习了,有专业基础
st9983 2010-11-28
  • 打赏
  • 举报
回复
进来看看,学习一下。
xxpp688 2010-11-28
  • 打赏
  • 举报
回复
纸飞机,飘过学习了。
luanshijuxing 2010-11-27
  • 打赏
  • 举报
回复
看不懂
ab6968033 2010-11-27
  • 打赏
  • 举报
回复
好好学习天天向上
p315573782 2010-11-27
  • 打赏
  • 举报
回复
妈妈 考虑。kj.kl离开。看l.l
p315573782 2010-11-27
  • 打赏
  • 举报
回复
撒旦告诉对方答复 公会
vjebbs 2010-11-27
  • 打赏
  • 举报
回复
lz强大 学习了。。。。
jxkq2300 2010-11-27
  • 打赏
  • 举报
回复
飘过~~~~
zhangdj_java 2010-11-27
  • 打赏
  • 举报
回复
吸取、吸取
abcd78875 2010-11-27
  • 打赏
  • 举报
回复
没有明白,还是迷茫!
cylfsyy 2010-11-26
  • 打赏
  • 举报
回复
这么高深怎么看得明啊
kemengjx 2010-11-26
  • 打赏
  • 举报
回复
学习了,学习了
加载更多回复(38)

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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