SQL之JOIN总

LEFT JOIN
  • 1、对符合on条件的“左表”和“右表”做笛卡儿积返回
  • 2、返回不符合on条件的“左表”行,其中的“右表”值全返回null
  • 注:以左表为准

RIGHT JOIN
  • 1、对符合on条件的“右表”和“左表”做笛卡儿积返回
  • 2、返回不符合on条件的“右表”行,其中的“左表”值全返回null
  • 注:以右表为准

下面3个都是只对符合on条件的左右表做笛卡儿积返回
  • INNER JOIN
  • FULL JOIN
  • CROSS JOIN


附:SQL优化总结:
  • 1、不要在索引上使用函数(包括计算、not),如使用将不会使用索引,转为全表扫描
  • 2、用 >= 替代 >    如: >=4 代替 >3
  • 3、用 in 替代 or
  • 4、用 exists 替代 in 和 distinct
  • 5、用 where 替代 having
  • 6、尽量避免用 * ,因为sql解析中要把 * 全部转为列名,这需要费时的查询一次数据字典
  • 7、计算记录条数: count(索引)  速度上大于 count(*)
  • 8、Oracle解析sql语句会全部转换为大写,所以sql语句尽量用大写
  • 9、Oracle采用自下而上的顺序解析where字句,所以尽量把能过滤最大数量记录的条件写在where字句的末尾
  • .
  • .
  • 强烈不推荐:
  • 1、not in
  • 2、<>
  • 3、>  (用 >= 代替)
  • 4、like '%ab%' (不会使用索引,尽量用 like 'Aab%' 代替)

你可能感兴趣的:(oracle,sql)