仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 941|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL网页编程之SQL优化思索

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:44:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。优化初进oracle殿堂的人,在学写SQL语句时一样平常会失掉一个教导,那就是exists比in更要高效,但细心设想如果真的这么复杂那爽性往失落in,岂不是省往良多贫苦?
  
 本人对这两种查询语句写法的熟悉也对照浅易,可是以为仍是对照无效,以是有乐趣的能够瞄一眼哦
  
  ......
  
  先说IN
  
  他相称对innertable实行一个个带有distinct的子查询语句,然后失掉的查询了局集再与outertable举行毗连,固然毗连的体例和索引的利用仍旧同于一般的两表毗连。
  
  select*fromT1wherexin(selectyfromT2);
  
  能够转换成以下
  
  select*from
  
  T1,(selectdistinctyfromT2)T2
  
  whereT1.x=T2.y;
  
  再说exists
  
  实践上exists相称于对outertable举行全表扫描,用从中检索到的每行与innertable做轮回婚配输入响应的切合前提的了局,其次要开支是对outertable的全表扫描(fullscan),而毗连体例是nestedloop体例。
  
  能够写成
  
  select*fromT1whereexists(selectNULLfromT2whereT2.y=T1.x);
  
  转换成
  
  forcursor1in(select*fromT1)
  
  loop
  
  if(exists(selectNULLfromT2whereT2.y=cursor1.x))
  
  then
  
  前往婚配的纪录;
  
  endif;
  
  endloop;
  
  经由过程下面的注释,如今很简单分明当T2数据量伟大且索引情形欠好(大批反复值等),则不宜利用发生对T2的distinct检索而招致体系开支伟大的IN操纵,反之当T1表数据量伟大(不受索引影响)而T2表数据较少且索引优秀则不宜利用引发T1全表扫描的EXISTS操纵,索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。
admin 该用户已被删除
沙发
发表于 2015-1-19 21:57:13 | 只看该作者
分区表效率问题肯定是大家关心的问题。在我的试验中,如果按照分区字段进行的查询(过滤)效率会高于未分区表的相同语句。但是如果按照非分区字段进行查询,效率会低于未分区表的相同语句。
板凳
发表于 2015-1-28 13:02:29 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
小妖女 该用户已被删除
地板
发表于 2015-2-5 21:34:28 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
飘灵儿 该用户已被删除
5#
发表于 2015-2-13 17:01:05 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
爱飞 该用户已被删除
6#
发表于 2015-3-4 00:31:07 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
老尸 该用户已被删除
7#
发表于 2015-3-19 00:32:12 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
海妖 该用户已被删除
8#
发表于 2015-3-26 23:23:52 | 只看该作者
以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 20:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表