ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关系查询处理和查询优化

2022-07-24 22:35:37  阅读:198  来源: 互联网

标签:数据量 查询处理 查询 索引 拆分 mysql 优化


1. 查询优化

超过500条创建索引,在索引字段上查询

使用连接代替子查询

尽用IN代替0R, OR的效率是n级别,IN 的效率是log(n)级别,IN 的个数建议控制在200以内

能用BETWEEN不用IN,B+树的特性这种取范围值是比较快的

尽用LIMIT,同时尽量不用count *,inndo是不维护数量的会扫描表数量

切分一个连接时间很长的查询,或返回数据量很大的查询

分解关联查询,在应用层做关联,可以更容易对数据库进行拆分,减少锁的竞争,减少冗余记录的查询

 

2. 大数据量优化

1.建表优化

此处考察如何建立索引

字段类型尽量精确,尽量小,能用int不要用bigint

尽量不要用null,声明not null,如果是null用0代替

尽量使用TIMESTAMP而非DATETIME

用整型来存ip

注意反范式和范式的优化

2.查询优化

索引命中问题和索引失效问题

3.加缓存

mysql一两千级并发

redis五六万级并发

4.横向纵向拆分

横向拆分 : 分表避免单表数据量过大,mysql千万级就明显性能降低了

纵向拆分 : 单行数据量过大会导致无用字段我网络开销,因为mysql是page为单位读取,如果单行数据量过大会导致page存储数量降低,导致需要读取的page变多缓存变大

5.分表分库

6.使用服务业务场景的数据库

ES或者MoungoDb右或者HBase、

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

这块忘得差不多了,以后还会再整理

标签:数据量,查询处理,查询,索引,拆分,mysql,优化
来源: https://www.cnblogs.com/tenyuan/p/16515554.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有