• MySQL优化理解


    1.索引列的值设置为null,可以用空字符串代替,为null会导致不走索引

    2.遵循最佳左前缀原则,因为MySQL的B+树索引结构根据最左的column进行创建的,

    3.不要对索引列进行函数或表达式的计算,正确做法是将值计算好再传进来

    4.避免全表扫描 Where 中少用 NOT、!=、<>、!<、!>、NOT EXISTS、NOT IN、NOT LIKE,它们会引起全表扫描。

    5.用 Where 子句替代 having 子句 避免使用 having 子句,having 只会在检索出所有记录之后才对结果集进行过滤。

    6.or只有两边都有索引才走索引,如果都没有,或者只有一个是不走索引的,可以使用union 代替

    7.exists 代替 in Oracle 中 In 子查询返回的结果不能超过 1000 条,使用 exists 为替代方案。

    8. 优先使用 UNION ALL (不去重),union(去重),union使用到额临时表

    9.范围查询使用 between

    10.查询时必须使用正确的类型,用不正确的类型可能导致不走索引

    11.order by 如果根据多个值进行排序,排序方式必须保持一致

    12.将能过滤掉最多数据,索引不会失效,的过滤条件写在前面

     

    13.尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

    14.2000条以内的记录不建议做索引

    15.如果查询不走索引,可以通过 force index(column) 强制走索引

     

    其他优化tip:

    避免select *

    小结果驱动大结果

    不使用外键关联

    大sql可以拆分成小SQL

    减少IO连接次数

     

  • 相关阅读:
    关于:nth-children 的几点总结
    JQ常用知识点总结(笔记篇)————
    ajax的数据处理
    快捷小技巧
    javascript获取select,checkbox,radio的值
    面试题
    canvas基础
    python中的线程之semaphore信号量
    PHP中$_POST和$_GET的用法
    php中echo、print、print_r、var_dump、var_export区别
  • 原文地址:https://www.cnblogs.com/Jemb/p/11581603.html
Copyright © 2020-2023  润新知