关于一些常见的Oracle性能谣言/讹传
来源:互联网 发布:arp表和mac表和vlan 编辑:程序博客网 时间:2024/06/05 03:01
最近看《基于案例学SQL优化》,觉得讲得不错,把一些东西记录下来,所以这文章算是“转载”类型。
1. 谣言一:count(*) 和 count(列) 效率后者高于前者。
坊间流传的说法是后者能使用索引,因此快。
- 首先,在某种情况下,这两种写法不具有可比性。
为何这么说呢,假设一个表 t 中有500行,列a有一个null值,那么
select count(*) from t; COUNT(*)1500select count(a) from t COUNT(a)1499两个写法得到的结果都不一样,怎么比?
- 其次,如果这个列是个索引并且not null列,那么在这种可比的情况下,这两种写法,count(*)效率要高于count(列)
下图是建立一个25列的表,往里面插入1万行数据,并且通过count(*)、count(n1)、count(n2)……等方式分别执行1000遍得到如下图示:
结论:列的偏移量决定性能,列越靠后,访问的开销越大。由于count(*)的算法与列偏移量无关,所以count(*)最快。
这是Oracle优化器的处理方式。
2. 谣言二:in与exists后者效率高。
3. 谣言三:表连接的时候,小表在后,大表在前;where condition的时候,索引要写后面,小表要写后面。
待续……
0 0
- 关于一些常见的Oracle性能谣言/讹传
- 关于Java的谣言之字符串+的性能问题
- 关于百度“判罚”的谣言
- 浅谈关于平板电脑的几个谣言
- 关于大龄程序员的谣言 新手必读
- oracle的一些常见错误
- ORACLE的一些常见函数
- 关于一些性能的优化
- 影响 oracle 性能的常见事件
- 关于阿里巴巴捐款的谣言与集团澄清声明
- 一些常见的关于 IT 的定律
- 一些常见的关于 IT 的定律
- 在oracle中常见的一些操作
- Oracle 数据库一些常见的优化
- 关于SEO的一些常见知识
- 关于一些常见异常的记录
- 关于java的一些常见小问题
- Archlinux+LXDE 关于一些常见的应用软件
- Javadoc注释的用法
- 企业Linux服务器数据实时同步备份的解决方案
- unicode string javascript
- 调用系统分享功能
- 黑马程序员----java基础(GUI)
- 关于一些常见的Oracle性能谣言/讹传
- Linux下find命令详解
- C++ STL set和multiset的使用交集并集差集算法
- debian(wheezy)安装sockso在线音乐共享,分享服务
- 【javaSE】Java泛型机制
- 大型 实用化 java OA, 带有移动版。已经有现场在使用,可以直接部署商用,也可个人学习
- PDF417美国驾照条形码信息自动识别
- ListFrament用法
- 图片添加滤镜