mysql 优化(4)索引覆盖和最优索引

索引覆盖** 很重要的 一个概念 就是在索引上查找!!!

如果查询的列恰好是索引的一部分,那么查询只需要在索引文件上进行,不需要回行到磁盘再找数据.

这种查询速度非常快,称为”索引覆盖”

非聚促索引 索引文件对应了数据要回行 浪费掉了时间 

索引和数据区别 

索引是高效组织起来的树 , 节点 ,查找树叶 结构更优于数据

索引可以被导入内存中进行查询 

索引本身数据结构简单 再放入内存 很快很快 

。。。。。。。。。结果一回行 就满了。。。我擦。。。

所以呢 如果建立两条索引 index( uid , aid) 

如果在索引树上已经覆盖了你想要的数据 如 select uid from msg where aid = 1 

索引已经覆盖了想要查的 则直接在内存中的索引取出来 速度效率都非常快 自然不用回行查找

最优索引

查询频繁,区分度高 ,长度小

尽量覆盖常用字段 , ——》索引覆盖

左前缀不易区分 逆转url 把内容到过来 ; 左前缀区分度大 

伪哈希 crc32() 函数 来唯一区分 crc32(’http://wwww.baidu.com’);给urlcrc 建索引 而不是去给url 避免了索引

学会 explain 来查看效果 ;

伪hash索引效果

同时存 url_hash列

create table t10 (id int primary key,url char(60) not null default '');
insert into t10 values (1,'http://www.baidu.com'),(2,'http://www.sina.com'),(3,'http://www.sohu.com.cn'),(4,'http://www.onlinedown.net'),(5,'http://www.gov.cn');alter table t10 add urlcrc int unsigned not null;

在sql存储时, crcurl== crc32(url),

因为crc的结果是32位int无符号数,因此当数据超过40亿,也会有重复,但这是值得的.

(索引长度为int4个字节)

多咧索引的设计

但从 商城的实际业务业务看, 顾客一般先选大分类->小分类->品牌,

最终选择 (1)index(cat_id,brand_id), + index(cat_id,shop_price)来建立索引

甚至可以再加 (3)index(cat_id,brand_id,shop_price),3个冗余索引 冗余字段 。。。

但(3)中的前2列和(1)中的前2列一样,再去掉(1)

index(cat_id,price) 和 index(cat_id,brand_id,shop_price); 也就是可以冗余 但是不能能重复 左前缀原则

 以上就是mysql 优化(4)索引覆盖和最优索引的内容,更多相关内容请关注PHP中文网(www.php.cn)!

纳米搜索 纳米搜索

纳米搜索:360推出的新一代AI搜索引擎

纳米搜索 30 查看详情 纳米搜索

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/418993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 08:48:24
下一篇 2025年11月7日 08:49:49

相关推荐

  • MySQL中高效计算当前周数据总和的专业指南

    本教程旨在详细指导如何在MySQL数据库中高效地计算以周一为起始的当前周数据总和。文章将深入解析MySQL日期函数的使用,演示如何精确确定当前周的起始与结束日期,并构建优化的SQL查询语句以避免潜在的索引失效问题。此外,还将提供PHP集成示例,帮助开发者将此功能无缝融入Web应用中,实现动态展示当前…

    2025年12月12日
    000
  • 优化MySQL查询:解决子查询导致的性能问题

    优化MySQL查询:解决子查询导致的性能问题 本文将探讨如何优化MySQL中包含子查询的慢查询,特别是当子查询使用COUNT(*)时。我们将通过一个实际案例,介绍如何使用EXISTS语句替代COUNT(*)子查询,并配合适当的索引,从而显著提升查询性能。 问题分析 原查询语句如下: SELECT *…

    2025年12月12日
    000
  • php如何连接mysql数据库_php连接mysql数据库的PDO和mysqli方法对比

    答案:PHP连接MySQL主要使用PDO和MySQLi。PDO支持多数据库、预处理防注入,适合需迁移的项目;MySQLi专为MySQL优化,性能更好,支持更多原生特性。根据是否需要多数据库兼容及功能需求选择。 PHP连接MySQL数据库主要使用两种方式:PDO(PHP Data Objects)和M…

    2025年12月12日
    000
  • PHP动态网页XML数据解析_PHP动态网页XML文件解析处理教程

    PHP解析XML时,SimpleXML适合简单读取,DOMDocument用于复杂操作,XMLReader处理大文件;需防范XXE和XML炸弹,禁用外部实体并做好错误处理。 PHP动态网页解析XML数据,核心方法主要围绕SimpleXML和DOMDocument两大PHP内置扩展。前者以其简洁直观的…

    2025年12月12日
    000
  • MySQL网络延迟性能优化_MySQL减少响应时间方法

    mysql网络延迟问题可通过多层面诊断与优化解决。1.诊断需从网络、mysql状态、数据包分析及系统资源四方面入手;2.调整tcp_nodelay、socket_buffer_size、max_allowed_packet等参数;3.使用连接池、长连接、查询缓存减少连接开销;4.sql优化包括精简字…

    2025年12月4日 数据库
    200
  • mysql查询响应如何加速_mysql优化漏斗模型

    先检查硬件与系统资源,确认磁盘IO、内存和CPU是否瓶颈,避免盲目优化SQL。 MySQL查询响应变慢,往往不是单一问题导致的。要系统性优化,可以借助“优化漏斗模型”——从宏观到微观逐层排查,过滤掉非关键因素,精准定位瓶颈。这个模型帮助你按优先级处理问题,避免盲目调优。 1. 检查硬件与系统资源 在…

    2025年12月2日 数据库
    000
  • MySQL性能优化之一:提高MySQL并发能力的思路

    1、使用行级别锁,避免表级别或页级别锁尽量使用支持行级别锁的存储引擎,如InnoDB;只在读操作显著多于写作的场景中(如数据仓库类的应用)使用表级别锁的存储引 1、使用行级别锁,避免表级别或页级别锁 尽量使用支持行级别锁的存储引擎,虚拟主机,如InnoDB;只在读操作显著多于写作的场景中(如数据仓库…

    2025年12月2日
    000
  • 如何通过索引对MySQL优化

    %ignore_a_1%可对mysql进行优化,当数据表的数据什分庞大时就可以通过建立索引来解决这个问题,索引将表中的数据按照字母的顺序存储在单独的位置上来优化数据库性能 MySQL中的数据库索引可以帮助我们优化性能,对于小型的数据表来说可能差异性很小但是对于拥有大量数据的表来说,索引有明显的提高性…

    2025年12月2日 数据库
    000
  • 如何在mysql中优化网络延迟影响

    降低MySQL网络延迟需从连接管理、数据传输和架构设计入手,使用连接池减少握手开销;2. 通过批量操作、存储过程减少往返次数;3. 启用压缩协议减小传输体积;4. 优化查询以减少数据传输量;5. 将数据库部署在靠近应用的节点或使用本地只读副本缩短物理距离,提升响应速度。 MySQL的性能不仅依赖于服…

    2025年12月2日 数据库
    000
  • mysql如何优化OR条件_mysql OR条件查询优化方法

    使用UNION替代OR可提升索引效率,确保OR字段均有索引以启用index_merge,合理创建复合索引,重写查询为IN或范围条件减少OR使用,结合EXPLAIN分析执行计划优化查询路径。 在MySQL中,OR条件查询常常会导致索引失效,从而引发全表扫描,影响查询性能。优化OR查询的关键在于确保查询…

    2025年12月2日 数据库
    000
  • mysql中如何使用索引覆盖聚合函数_mysql聚合函数索引优化

    索引覆盖指查询所需字段均在索引中,无需回表。合理设计联合索引可使COUNT、SUM等聚合函数直接利用索引完成计算,通过EXPLAIN检查“Using index”验证,提升查询效率。 在MySQL中,合理使用索引可以显著提升聚合函数(如 COUNT、SUM、AVG、MIN、MAX)的查询性能。其中,…

    2025年12月2日 数据库
    100
  • mysql数据库优化的基本概念_mysql数据库优化概念方法

    MySQL优化需从索引、SQL语句、表结构和配置参数入手。1. 合理创建索引,遵循最左前缀原则,避免冗余;2. 优化SQL,避免全表扫描和函数操作导致索引失效;3. 设计规范的表结构,选择合适数据类型并适度反范式化;4. 调整innodb_buffer_pool_size、max_connectio…

    2025年12月2日 数据库
    000
  • 如何在mysql中优化锁等待_mysql锁等待优化技巧

    答案:优化MySQL锁等待需缩短事务周期、合理使用索引、选择合适隔离级别并避免死锁。具体包括避免长事务、移出非数据库操作、及时提交、批量更新;确保WHERE条件走索引,避免全表扫描;优先使用READ COMMITTED减少间隙锁;统一访问顺序降低死锁风险,应用层实现重试机制。定期分析执行计划与死锁日…

    2025年12月2日 数据库
    000
  • mysql如何优化排序文件_mysql排序文件优化方法

    优先创建联合索引(如idx_city_age)使排序字段有序,避免filesort;确保索引顺序与ORDER BY一致,覆盖查询字段减少回表;MySQL 8.0+支持混合排序方向;无法避免时调大sort_buffer_size至1MB~8MB减少磁盘I/O;用EXPLAIN FORMAT=JSON检…

    2025年12月2日 数据库
    000
  • 如何在mysql中优化数据库性能_mysql性能优化方法

    数据库性能优化是提升系统响应速度和稳定性的关键环节。在MySQL中,合理的配置、索引设计和查询优化能显著提高运行效率。以下是一些实用且有效的MySQL性能优化方法。 合理使用索引 索引是提升查询速度最直接的方式,但不恰当的使用反而会拖慢写入性能。 建议: 为频繁用于WHERE、JOIN、ORDER …

    2025年12月2日 数据库
    000
  • 如何在mysql中优化多表连接_mysql多表连接优化技巧

    答案:优化MySQL多表连接需确保连接字段有索引、提前过滤数据、选择合适JOIN类型并利用EXPLAIN分析执行计划。具体包括在ON字段创建索引(如表B.a_id),减少扫描行数,优先使用INNER JOIN,避免全表扫描和临时表,通过执行计划持续调优以提升性能。 在MySQL中进行多表连接查询时,…

    2025年12月2日 数据库
    000
  • 如何在mysql中使用前缀索引_mysql前缀索引优化方法

    前缀索引是对字符串前N个字符创建索引,用于节省空间并提升查询效率,适用于VARCHAR等长字段;通过计算不同长度下的唯一值比例选择最佳前缀长度,确保高选择性;但不支持ORDER BY、GROUP BY和覆盖索引,需结合业务数据分布权衡长度。 在MySQL中,当字段内容较长时(如VARCHAR(255…

    2025年12月2日 数据库
    000
  • mysql中查询优化器的操作

    查询优化器的核心任务是生成高效执行计划,通过分析语法树、生成候选方案、估算成本并选择最优路径来提升SQL执行效率,其决策受索引统计、WHERE条件、JOIN顺序和数据类型匹配影响,开发者可通过EXPLAIN分析、强制索引、调整optimizer_switch等手段干预,需注意统计信息更新与复杂查询的…

    2025年12月2日 数据库
    000
  • mysql索引覆盖如何做到_mysql覆盖索引解析

    覆盖索引是指查询所需字段均包含在某个索引中,无需回表获取数据。例如在users表中对(name, age)建立联合索引后,执行SELECT name, age FROM users WHERE name = ‘John’可直接从索引获取数据,执行计划的Extra显示Using…

    2025年12月2日 数据库
    000
  • MySQL优化之分区表_MySQL

    当数据库数据量涨到一定数量时,性能就成为我们不能不关注的问题,如何优化呢? 常用的方式不外乎那么几种:   1、分表,即把一个很大的表达数据分到几个表中,这样每个表数据都不多。     优点:提高并发量,减小锁的粒度    缺点:代码维护成本高,相关sql都需要改动   2、分区,所有的数据还在一个…

    2025年12月2日 数据库
    000

发表回复

登录后才能评论
关注微信