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

网站怎么做分时网站开发设计协议

网站怎么做分时,网站开发设计协议,监控直播网站开发,app推广接单渠道MySQL 索引失效处理#xff1a;原因分析与优化实战 MySQL 索引失效处理#xff1a;原因分析与优化实战引言一、什么是索引失效#xff1f;二、索引失效的常见原因2.1 查询条件中使用函数或表达式示例#xff1a;原因#xff1a; 2.2 数据类型不匹配示例#xff1a;原因原因分析与优化实战 MySQL 索引失效处理原因分析与优化实战引言一、什么是索引失效二、索引失效的常见原因2.1 查询条件中使用函数或表达式示例原因 2.2 数据类型不匹配示例原因 2.3 使用 OR 条件示例原因 2.4 索引列参与计算示例原因 2.5 使用 LIKE 以通配符开头示例原因 2.6 复合索引未遵循最左前缀原则示例原因 2.7 数据分布不均匀示例原因 三、索引失效的优化方法3.1 避免对索引列使用函数或表达式优化示例 3.2 确保数据类型匹配优化示例 3.3 使用 UNION 替代 OR优化示例 3.4 避免索引列参与计算优化示例 3.5 优化 LIKE 查询优化示例 3.6 遵循复合索引的最左前缀原则优化示例 3.7 强制使用索引优化示例 3.8 更新统计信息优化示例 四、实战案例4.1 案例背景4.2 优化步骤 五、总结 MySQL 索引失效处理原因分析与优化实战 引言 索引是 MySQL 中提升查询性能的关键工具。然而即使创建了索引查询性能也可能不理想甚至出现索引失效的情况。索引失效会导致 MySQL 执行全表扫描严重影响查询性能。本文将深入探讨索引失效的常见原因并提供相应的优化方法帮助你更好地处理索引失效问题。 一、什么是索引失效 索引失效是指 MySQL 在执行查询时未能使用已创建的索引而是选择了全表扫描或其他低效的执行方式。索引失效通常会导致查询性能显著下降。 二、索引失效的常见原因 2.1 查询条件中使用函数或表达式 如果查询条件中对索引列使用了函数或表达式索引可能无法生效。 示例 -- 索引失效 SELECT * FROM test_table WHERE YEAR(created_at) 2023;-- 优化后 SELECT * FROM test_table WHERE created_at 2023-01-01 AND created_at 2024-01-01;原因 MySQL 无法对函数或表达式的结果使用索引。 2.2 数据类型不匹配 如果查询条件中的数据类型与索引列的数据类型不匹配索引可能无法生效。 示例 -- 索引失效age 是 INT但条件是字符串 SELECT * FROM test_table WHERE age 30;-- 优化后 SELECT * FROM test_table WHERE age 30;原因 MySQL 需要进行隐式类型转换导致索引失效。 2.3 使用 OR 条件 如果查询条件中使用了 OR且 OR 两边的条件涉及不同列索引可能无法生效。 示例 -- 索引失效 SELECT * FROM test_table WHERE age 30 OR name Alice;-- 优化后 SELECT * FROM test_table WHERE age 30 UNION SELECT * FROM test_table WHERE name Alice;原因 MySQL 无法同时使用多个单列索引。 2.4 索引列参与计算 如果查询条件中索引列参与了计算索引可能无法生效。 示例 -- 索引失效 SELECT * FROM test_table WHERE age 10 40;-- 优化后 SELECT * FROM test_table WHERE age 30;原因 MySQL 无法对计算后的结果使用索引。 2.5 使用 LIKE 以通配符开头 如果查询条件中使用 LIKE且通配符% 或 _出现在开头索引可能无法生效。 示例 -- 索引失效 SELECT * FROM test_table WHERE name LIKE %Alice%;-- 优化后如果可能 SELECT * FROM test_table WHERE name LIKE Alice%;原因 MySQL 无法对以通配符开头的模式使用索引。 2.6 复合索引未遵循最左前缀原则 如果查询条件未遵循复合索引的最左前缀原则索引可能无法生效。 示例 -- 创建复合索引 CREATE INDEX idx_age_created_at ON test_table(age, created_at);-- 索引失效未使用 age SELECT * FROM test_table WHERE created_at 2023-01-01;-- 优化后 SELECT * FROM test_table WHERE age 30 AND created_at 2023-01-01;原因 复合索引需要从左到右匹配否则无法使用索引。 2.7 数据分布不均匀 如果索引列的数据分布不均匀如某个值出现频率极高MySQL 可能认为全表扫描比使用索引更快。 示例 -- 假设 age30 的数据占 90% SELECT * FROM test_table WHERE age 30;原因 MySQL 优化器认为全表扫描的成本更低。 三、索引失效的优化方法 3.1 避免对索引列使用函数或表达式 确保查询条件中不对索引列使用函数或表达式。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE YEAR(created_at) 2023;-- 推荐 SELECT * FROM test_table WHERE created_at 2023-01-01 AND created_at 2024-01-01;3.2 确保数据类型匹配 确保查询条件中的数据类型与索引列的数据类型一致。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE age 30;-- 推荐 SELECT * FROM test_table WHERE age 30;3.3 使用 UNION 替代 OR 如果查询条件中使用了 OR可以尝试使用 UNION 替代。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE age 30 OR name Alice;-- 推荐 SELECT * FROM test_table WHERE age 30 UNION SELECT * FROM test_table WHERE name Alice;3.4 避免索引列参与计算 确保查询条件中索引列不参与计算。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE age 10 40;-- 推荐 SELECT * FROM test_table WHERE age 30;3.5 优化 LIKE 查询 尽量避免在 LIKE 查询中以通配符开头。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE name LIKE %Alice%;-- 推荐 SELECT * FROM test_table WHERE name LIKE Alice%;3.6 遵循复合索引的最左前缀原则 确保查询条件遵循复合索引的最左前缀原则。 优化示例 -- 不推荐 SELECT * FROM test_table WHERE created_at 2023-01-01;-- 推荐 SELECT * FROM test_table WHERE age 30 AND created_at 2023-01-01;3.7 强制使用索引 如果 MySQL 优化器未选择使用索引可以尝试强制使用索引。 优化示例 SELECT * FROM test_table FORCE INDEX (idx_age) WHERE age 30;3.8 更新统计信息 如果数据分布不均匀可以更新表的统计信息帮助优化器选择更合适的执行计划。 优化示例 ANALYZE TABLE test_table;四、实战案例 4.1 案例背景 假设我们有一个查询 SELECT * FROM test_table WHERE YEAR(created_at) 2023;通过 EXPLAIN 分析发现 type 是 ALL说明 MySQL 正在执行全表扫描。 4.2 优化步骤 避免使用函数 将查询条件改为范围查询 SELECT * FROM test_table WHERE created_at 2023-01-01 AND created_at 2024-01-01;创建索引 为 created_at 创建索引 CREATE INDEX idx_created_at ON test_table(created_at);使用 EXPLAIN 验证 确认索引是否生效 EXPLAIN SELECT * FROM test_table WHERE created_at 2023-01-01 AND created_at 2024-01-01;五、总结 索引失效是 MySQL 查询性能优化的常见问题。通过本文的学习你可以掌握以下技能 识别索引失效的常见原因。使用 EXPLAIN 分析查询执行计划。优化查询语句避免索引失效。强制使用索引或更新统计信息。 希望本文能帮助你更好地处理 MySQL 索引失效问题提升数据库查询性能
http://www.w-s-a.com/news/813205/

相关文章:

  • 58做网站吗南京有关制作网站的公司
  • 申请建设门户网站的申请先做网站还是先申请域名
  • 门户网站怎么做seo玩具外贸好做吗
  • 网页设计模板的网站黄埔营销型网站建设
  • 企业为什么要建立网站江苏高校品牌专业建设工程网站
  • 网站建设公司需要交税么福建省城乡建设厅网站
  • dedecms网站首页网站正在建设中 源码下载
  • 论坛网站有哪些怎么wordpress主题
  • 网站搭建中企动力第一返利的网站怎么做
  • 在哪网站可以做农信社模拟试卷优衣库网站建设的目的
  • 杭州网站建设ttmwl网络平台推广公司
  • 工作室网站技能培训班
  • 东丰网站建设万盛网站制作
  • 安徽黄山网站建设wordpress 公众号 获取密码
  • 自己电脑做网站模板腾讯网站建设分析
  • 如何增加网站反链虚拟主机 2个网站
  • 手机网站调用分享wordpress.org移除
  • 工业和信息化部网站备案系统查询市场调研表模板
  • 网站流量转化线下推广活动有哪些
  • 030159网站建设与维护宝安网站公司
  • 个人网站备案网站内容做gif表情包网站
  • 湖南省建设厅城乡建设网站怎么建立一个网站网址
  • 图书馆网站建设的规章制度免费个人主页注册
  • 表格网站源码wordpress更换网站域名
  • 芜湖做网站多少钱做公司的网站的需求有哪些
  • 玉溪网站建设制作凌风wordpress百度云
  • 专业建网站价格门户网站建设 请示
  • 安徽省省博物馆网站建设佛山公司网站设计
  • 温州专业营销网站公司网络建设规划
  • 做模型常说的d站是什么网站wordpress 繁體