误区一 count(*) 和count(列) 的区别
数据库: oracle11G
无索引的情况下, 一样速度
有索引字段可以为空的情况下, count(列)更快
有索引字段不可以为空的情况下, 两个一样快
count(列)的时候, 列的偏移量决定性能, 列越靠后, 访问的开销越大. 由于count()的算法与列的偏移量无关, 所以count()最快, count(最后列最慢)
误区二 关于SQL书写顺序
表链接要大表写在后面, 小表写在前面,
select count(*) from max_table, min_table ;
select count(*) from min_table, max_table ;
这两种写法在oracle11G的解析器下是没有区别的
以前的解析器要求这样做 ,但是因为oracle解析器的演变, 这个已经过时了.
误区三 关于IN与EXIST
在oracle11G的时候, 无论是用IN 还是EXIST, 都是一样的cost
因为oracle解析器做了优化, 所以无所谓了