sql 优化

  1. 避免使用**select ***
  2. .用 union all 代替 union
    union去重去重过程需要遍历排序比较,更消耗cpu资源
    确定唯一没有重复数据能用union all尽量用
  3. 如果主查询的数据集大,则使用in关键字,效率高。如果子查询的数据集大,则使用exist关键字,效率高。
  4. 尽量少用or (mysql优化器对or没有太好的优化,可以使用INunionunion all 代替or)
  5. 批量插入
  6. 尽量用 join 代替子查询
    (相比于子查询join的性能要好一些,虽然 Join 性能并不佳,但是和 MySQL 的子查询比起来还是有非常大的性能优势。)。
  7. where字句替换HAVING字句
    避免使用HAVING字句,因为HAVING只会在检索出所有记录之后才对结果集进行过滤,而where则是在聚合前刷选记录,如果能通过where字句限制记录的数目,那就能减少这方面的开销。
  8. count(1)count(primary_key) 优于 count(*)
  9. 多表关联查询时,小表在前大表在后
    (在MySQL中,执行 from 后的表关联查询是从左往右执行的(Oracle相反),第一张表会涉及到全表扫描,所以将小表放在前面,先扫小表,扫描效率较,在扫描后面的大表,或许只扫描大表的前100行就符合返回条件并return了。)
  10. 调整Where字句中的连接顺序
    (MySQL采用从左往右自上而下的顺序解析where子句。根据这个原理,应将过滤数据多的条件往前放最快速度缩小结果集。)

你可能感兴趣的:(大数据面试,sql)