当前位置: 首页 > news >正文

com网站注册域名郧阳网站建设

com网站注册域名,郧阳网站建设,wordpress极简,贵阳网站开发报价MySQL 的索引失效指的是#xff1a;尽管在表上建立了索引#xff0c;但在某些查询场景下#xff0c;MySQL 优化器却没有利用这些索引#xff0c;从而导致查询走了全表扫描#xff0c;性能大大降低。下面详细说明几种常见的导致索引失效的情况及其原因#xff1a; 1. 对索…MySQL 的索引失效指的是尽管在表上建立了索引但在某些查询场景下MySQL 优化器却没有利用这些索引从而导致查询走了全表扫描性能大大降低。下面详细说明几种常见的导致索引失效的情况及其原因 1. 对索引列使用函数或表达式 问题描述如果在 WHERE 子句中对索引列使用函数如 LENGTH(), SUBSTR(), ROUND() 等或进行算术运算例如 id110MySQL 无法直接利用索引因为索引中存储的是列的原始值而非经过计算后的结果。举例 SELECT * FROM t_user WHERE LENGTH(name) 6; SELECT * FROM t_user WHERE id 1 10;建议尽量避免在索引列上直接进行函数调用或运算如果必须使用可以考虑使用“生成列”virtual column并对生成列建立索引。 2. 隐式类型转换 问题描述当查询条件中传入的参数类型与索引列的定义类型不一致时MySQL 会进行隐式类型转换这通常会让索引失效。例如 表中字段 code 定义为 VARCHAR但查询时写作 WHERE code 101数字而非字符串。 举例 -- 错误写法由于 101 是数字MySQL 需要将 code 列的值转换后比较导致索引失效 SELECT * FROM t_user WHERE code 101;-- 正确写法使用字符串常量 SELECT * FROM t_user WHERE code 101;建议保证查询条件的参数类型与列的数据类型一致尽量使用相同类型的值。 3. LIKE 模糊匹配中的前置通配符 问题描述B树索引是按顺序存储的只能有效用于前缀匹配。如果 LIKE 模式中通配符 % 出现在最前面如 LIKE %abc 或 LIKE %abc%则无法利用索引进行快速定位。举例 SELECT * FROM t_user WHERE name LIKE %林;建议尽量使用前缀匹配例如 LIKE 林% 这种写法能利用索引。 4. 联合索引的最左匹配原则 问题描述对于联合索引例如 (code, age, name)MySQL 只能利用索引中从最左边开始连续出现的列。如果查询条件未包含联合索引的最左边列则无法使用整个联合索引。举例 如果联合索引为 (code, age, name)查询条件 WHERE age 21 或 WHERE name 张三 将无法利用该索引而查询 WHERE code 101 或 WHERE code 101 AND name 张三 则能部分或完全利用索引。 建议设计查询时尽量使条件包含联合索引的最左列在建索引时考虑查询条件的使用顺序。 5. OR 条件导致索引失效 问题描述在 WHERE 子句中使用 OR 时如果 OR 两边的条件中有任一条件没有索引MySQL 往往会放弃使用索引从而走全表扫描。举例 SELECT * FROM t_user WHERE id 1 OR age 18;如果 age 字段没有建立索引即使 id 有索引整个查询也可能无法利用索引。建议尽量保证 OR 条件中的每个条件都能使用索引或考虑使用 UNION 替代 OR。 6. NOT IN 与 NOT EXISTS 等否定条件 问题描述对于 NOT IN 和 NOT EXISTS 这类条件MySQL 通常无法有效利用索引会导致全表扫描。尤其是在普通索引字段上使用时索引往往失效注意对于主键字段有时还能利用索引但不一定理想。建议在设计查询时尽量避免使用 NOT IN可考虑改写为 NOT EXISTS 或其他逻辑方式来优化查询。 7. 返回行数过多全表扫描判断 问题描述当查询条件返回的数据量占表中记录数较大通常超过 10%~30%时MySQL 优化器可能认为全表扫描比利用索引更高效从而选择不使用索引。建议如果确实需要返回大量数据可以尝试重新调整查询条件或优化数据结构以降低扫描行数。 8. NULL 值的影响 问题描述单列索引通常不存储 NULL 值而复合索引则不存储全部为 NULL 的记录。在涉及 IS NULL 或 IS NOT NULL 的查询中索引的利用情况可能会受到影响。建议在设计表结构时尽量避免让索引列允许大量 NULL 值如果必须允许可根据具体情况调整查询写法。 总结与优化建议 尽量避免在索引列上直接使用函数、表达式或进行运算如果需要请考虑使用生成列和函数索引MySQL 8.0 以后支持。保持数据类型一致确保查询条件的常量类型与表中列的类型一致避免隐式转换。优化 LIKE 查询尽量使用前缀匹配如 LIKE abc%而不是左模糊LIKE %abc。联合索引设计使用联合索引时遵循最左匹配原则设计时考虑最常用的查询条件。谨慎使用 OR 与否定条件确保 OR 条件中的所有子条件都能利用索引或尝试改写查询逻辑。合理估算返回数据量如果数据返回比例过高优化器可能自动选择全表扫描必要时可以通过调整查询条件或重构 SQL 来改善。注意 NULL 的处理合理设计字段的 NULL 属性避免因大量 NULL 值影响索引性能。 通过合理设计表结构和索引并注意查询语句的写法可以大大提高 MySQL 查询的性能避免因索引失效而带来的性能瓶颈。
http://www.hkea.cn/news/14285403/

相关文章:

  • 口碑好的赣州网站建设网页链接成整体通过网站
  • 网站代码建设+实例珠海互联网公司
  • 进入公众号显示网络异常优化大师软件大全
  • 哪个网站教做ppt深圳网站建设深正互联
  • 沈阳装修公司网站建设哈尔滨公司网站建设
  • 做网站吗成都黑帽seo
  • 做网站配送地址怎么变换天津自助建站软件
  • 怎么样做网站或产品推广北京app建设 网站开发公司
  • 湖州企业网站制作交互设计师网站
  • 建立个人网站能赚钱吗学做网站论坛怎么样
  • 温州网站建设华一长春seo网站排名
  • 国外有什么网站做游戏个人做外贸网站平台有哪些
  • 做网站的公司名称wordpress 注册 地址
  • 电子商务网站推广的主要方式爱牛网络
  • 外贸网站运营工作内容wordpress获取菜单链接
  • 企业官网属于什么网站电影网站做seo
  • 网站未备案wordpress链接温江区建设局网站
  • 旅游网站设计与建设论文网络营销外包公司怎么收费
  • 龙岩网站设计找哪家公司wordpress qq注册
  • 景点介绍网站模板制作网站的网址
  • 南通做网站的学室内设计去哪个学校好
  • 企业电子网站的建设案例分析做微博推广的网站
  • 个人网站开发可行性报告十大广告联盟
  • 打网站显示域名解析错误wordpress修改为中文
  • wordpress 网站标题网站模板下载 免费
  • 景区宣传网站制作模板福山区建设工程质量检测站网站
  • 整合营销网站建设静态网站建设步骤
  • asp网站安装到空间如何建网站运营网站
  • 做调查用哪个网站江苏泰州seo网络优化推广
  • 如何搜索asp网站地方网站推广