高质量Hive的常见用法

  1. 查询sql进行不使用select *,而是select具体字段,节省资源,减少网络开销,*查询时,很可能就不会使用到覆盖索引,就会造成回表查询

  2. 如果知道查询结果只有一条,或者只要最大/最小一条数据,建议用limit 1

  3. 尽量避免在where子句中用or连接,可以换成两个查询用union all连接,使用or可能导致索引失效

  4. 优化like语句,like '%123'和like '123%'有区别,把%放前面不走索引,放后面会走索引

  5. 使用where条件限定要查询的数据,避免返回多余的行,要啥数据就查啥,避免查出来之后再过滤

  6. 尽量避免在where子句中对字段进行表达式操作,将导致系统放弃使用索引进行全表扫描,比如where age-1=10,不如直接用age=11

  7. left join时,左表尽量小,条件进行放在左边处理,或者在join之前处理好再进行join

  8. 尽量避免在where子句中使用!=或<>操作符,否则引擎可能放弃使用索引进而进行全表扫描,如age<>18,可换为age > 18 union all age <18

  9. 慎用distinct,在字段很多时候使用会大大降低查询效率,可用group by代替

  10. 尽量用union all代替union

  11. 只含数字的字段尽量使用数字类型,不要设置为字符型,字符型会降低查询和连接的性能,并会增加存储开销

  12. 索引不适合建在有大量重复数据的字段上,如性别等,可能会放弃索引

  13. 连接多个表时,加上表名

  14. 先过滤再执行groupby

上一篇:腾讯TEG AILab 一面二面HR 意向书 | 面试复盘


下一篇:【性能测试】MySQL数据库性能测试