服装网站建设规划书怎么写,小米新品发布会,做php网站的书,seo网站关键词快速排名自己学习日志
索引优化 为搜索字段、排序字段、select查询列#xff0c;创建合适的索引#xff0c;不过要考虑数据的业务厂家#xff1a;查询多还是增删多 尽量建立组合索引并注意组合索引的创建顺序#xff0c;按照顺序组织查询条件#xff0c;尽量将筛选颗粒度大的条件…自己学习日志
索引优化 为搜索字段、排序字段、select查询列创建合适的索引不过要考虑数据的业务厂家查询多还是增删多 尽量建立组合索引并注意组合索引的创建顺序按照顺序组织查询条件尽量将筛选颗粒度大的条件放最左边 尽量使用覆盖索引select 语句中尽量不要使用 * order by 、group by 尽量要使用到索引 索引的长度尽量短短索引可以节省索引空间使得内存中可以装在更多的键值索引太长的列可以选择建立前缀索引 索引更新不能太频繁更新太频繁的数据不适合创建索引因为维护索引的成本很大 order by 的索引生效order by排序应该遵循最佳左前缀查询如果是使用多个索引字段进行排序那么排序的规则必然相同同什同降否则索引同样会失效 尽量避免索引失效比如不正确的模糊查询组合索引使用不遵循规则or关键字子查询建临时表耗费性能等 LIMIT优化 如果预计select命中的结果只有一条那么可以使用limit 1 可以停止全表扫描 处理分页会使用limit,当翻页到非常靠后的页面是偏移量会非常大这是limit的效率会非常低 limit offset size其实就是offset的问题导致MySQL扫描大量不需要的行然后抛弃掉 解决方案 单表分页时使用自增主键排序先使用where id offset limit后面只写rows select * from (select * from test where id 1000000 and id 1000500 order by id) t limit 0,20; 其他查询优化 小表驱动大表比如使用left jion时因为使用join的话第一张表是必须全变扫描的所以如果一少关联多久可以减少扫描次数 避免全表扫描MySQL在使用不等于 ! 或 的时候是无法使用索引的会导致全表扫描 避免MySQL放弃索引查询 特殊情况当数据量少几万的时候全表扫描会比使用索引快则可以不使用索引 尽量不要使用count(*),而是使用count(主键) count(*)遍历所有的行、列查询行数 count(列)查询指定列不为null的行数只查询了指定列 join两张表的关联字段最好都建立索引 select * from user u left join order o on u.id o.user_id where条件中尽量不要使用not in 语句建议使用not exists 合理使用慢查询日志explain执行计划查询。show profile查询SQL执行时的资源使用情况