标签:知识点 java where 尽量避免 列上 查询 索引 使用 优化
- id -表结构的顺序
- type - const时 表示运用的主键索引 效率最高 (const>eq_ref>ref>range>index>all)
- possible kes - 可能用到的索引,
- key - 实际用到的索引
- key_len -索引长度 越短 越好
- ref - 索引是哪一列 越多越好
- rows 扫描的行数
Sql优化
- 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
- 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id f
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
rom t where num is null
- 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描
- 应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描
- not in 也要慎用,否则会导致全表扫,注意:in不会造成索引失效
- 使用like时 , %在前用不到索引 。"%aa%"不会走索引 "aa%"会走索引
- 复合索引不遵循最左前缀法则(查询条件中不包括最左边的索引字段, 注意: 顺序不一致 不会失效 如: 复合索引 id_name_address 查询条件: where name = ‘’ and id = ‘’ and address = ‘’ 也会走索引)
- 对索引字段做运算
- 查询尽量确定的列明,少用*号 明确需要的字段 需要什么字段就查什么字段
- 尽量少嵌套子查询,这种查询会消耗大量的cpu
- 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有必要
- 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。
- 这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。
- .尽量避免大事务操作,提高系统并发能力
- 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理
- 单表列数目必须小于30,若超过则应该考虑将表拆分. 单表列数太多使得Mysql服务器处理InnoDB返回数据之间的映射成本太高
- 需要JOIN的字段,数据类型必须绝对一致(不一致 索引会失效, 这里的完全一致包括但不限于字段类型、字段长度、字符集、collection等等); 多表关联查询时,保证被关联的字段需要有索引
什么情况下避免使用索引
- 索引不应该使用在较小的表上。
- 索引不应该使用在有频繁的大批量的更新或插入操作的表上。
- 索引不应该使用在含有大量的 NULL 值的列上。
- 索引不应该使用在频繁操作的列上。
标签:知识点,java,where,尽量避免,列上,查询,索引,使用,优化 来源: https://blog.csdn.net/m0_64867896/article/details/122127028
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。