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

装修设计网站有哪些安徽飞亚建设网站

装修设计网站有哪些,安徽飞亚建设网站,沪指重上3000点,常用的网站类型有哪些类型有哪些类型有哪些索引是 MySQL 性能优化的核心要素之一,合理的索引设计可以大幅提升查询效率。下面我将从索引原理、类型、使用场景到优化策略,系统性地讲解 MySQL 索引。 1. 索引的基本概念 1. 什么是索引? 索引是存储引擎用来快速查找数据的数据结构&…

        索引是 MySQL 性能优化的核心要素之一,合理的索引设计可以大幅提升查询效率。下面我将从索引原理、类型、使用场景到优化策略,系统性地讲解 MySQL 索引。

1. 索引的基本概念

1. 什么是索引?

        索引是存储引擎用来快速查找数据的数据结构,类似于书籍的目录。它通过特定的算法(如B+树)对表中的一列或多列值进行排序存储,从而加速数据检索。

2. 索引的优缺点

  • 优化:

    • 大幅提高查询速度。

    • 加速表连接操作。

    • 保证数据唯一性(唯一索引)。

    • 优化排序和分组操作。

  • 缺点

    • 占用额外存储空间。

    • 降低数据写入速度(增删改需要维护索引)。

    • 增加优化器选择负担。

2. MySQL 索引类型

1. 按数据结构分类

索引类型描述适用场景
B+Tree索引InnoDB默认索引类型,平衡多路搜索树等值查询、范围查询、排序
Hash索引基于哈希表实现,精确匹配效率极高,InnoDB 自动为频繁访问的二级索引创建哈希索引,加速等值查询,完全自动管理,无需配置内存表的等值查询
Full-text全文索引,基于倒排索引实现文本内容的搜索
R-Tree空间索引,用于地理数据GIS数据查询

2. 按功能特性分类

索引类型描述
普通索引最基本的索引,无特殊约束
唯一索引保证列值的唯一性,允许NULL值
主键索引特殊的唯一索引,不允许NULL值,每个表只能有一个
组合索引多个列组合建立的索引
覆盖索引查询的列都包含在索引中,无需回表
前缀索引只对列的前N个字符建立索引,节省空间

3. B+Tree 索引深度解析

1. B+Tree 结构特点

  • 多路平衡查找树:保持数据有序且查询路径长度均衡

  • 非叶子节点只存键值:不存储实际数据,存储索引键值+指针

  • 叶子节点形成链表:便于范围查询和全表扫描

    • 存储索引列的值

    • 对应记录的主键值

    • 事务ID、回滚指针等元数据

    数据只存在叶子节点:保证查询稳定性

2. InnoDB 的 B+Tree 实现

  • 聚簇索引:主键索引的叶子节点存储完整行数据

  • 二级索引:二级索引也称为非聚簇索引,是除主键索引外的所有索引的统称。与聚簇索引(主键索引)不同,二级索引的叶子节点不直接包含完整行数据。非主键索引的叶子节点存储主键值(需要回表查询)。

    • 二级索引的工作机制:

      • 查询流程(回表示例)

        -- 假设有二级索引 idx_name(name)
        SELECT * FROM users WHERE name = '张三';

        执行步骤:

        • 在 idx_name 索引树查找"张三"

        • 找到对应的主键值(如 id=5)

        • 用主键值到聚簇索引查找完整记录

        • 返回所有列数据

      •  覆盖索引优化

        当查询列都包含在二级索引中时,可避免回表:
        -- 索引 idx_name_age(name, age)
        SELECT name, age FROM users WHERE name = '张三';

        此时只需访问二级索引即可获取所需数据。

特性二级索引聚簇索引(主键索引)
存储内容索引列+主键值完整数据行
数量一个表可有多个每个表只有一个
查询方式可能需要回表直接获取数据
叶子节点存储指向主键的引用存储实际数据记录

4. 索引使用最佳实践

1. 索引设计原则

  • 选择性高的列优先:区分度高的列(如ID)比性别更适合建索引

  • 常用查询条件列:WHERE、JOIN、ORDER BY 涉及的列

  • 避免过度索引:一般表不超过5-6个索引

  • 组合索引列顺序:区分度高的列在前,常用查询列在前

2. 最左前缀原则

对于组合索引 (a,b,c):

-- 能使用索引的情况
WHERE a = 1
WHERE a = 1 AND b = 2
WHERE a = 1 AND b = 2 AND c = 3
WHERE a = 1 AND c = 3  -- 部分使用(a)-- 不能使用索引的情况
WHERE b = 2
WHERE c = 3
WHERE b = 2 AND c = 3

3. 索引失效场景

  • 使用函数或运算WHERE YEAR(create_time) = 2023

  • 隐式类型转换WHERE name = 123(name是字符串类型)

  • 前导模糊查询WHERE name LIKE '%张'

  • OR条件不当WHERE a=1 OR b=2(当a、b未都有索引时)

  • 索引列使用NOTWHERE NOT status=1

5. 索引优化技巧 

1. EXPLAIN 分析

Explain详解跳转

EXPLAIN SELECT * FROM users WHERE name = '张三';

关注关键字段:

  • type:从优到差 system > const > eq_ref > ref > range > index > ALL

  • key:实际使用的索引

  • rows:预估扫描行数

  • ExtraUsing index(覆盖索引)、Using filesort(需要额外排序)

2. 索引优化策略

  • 避免SELECT *:只查询需要的列,提高覆盖索引概率

  • 使用索引提示FORCE INDEXUSE INDEX

  • 定期分析表ANALYZE TABLE更新索引统计信息

  • 长字符列使用前缀索引ALTER TABLE t ADD INDEX idx_name(name(10))

6. 特殊索引场景 

1. 覆盖索引优化

-- 创建组合索引
ALTER TABLE orders ADD INDEX idx_user_product(user_id, product_id);-- 查询可以完全使用索引
SELECT user_id, product_id FROM orders WHERE user_id = 100;

2. 索引下推(ICP)

MySQL 5.6+特性,将WHERE条件过滤下推到存储引擎层:

-- 组合索引(a,b)
SELECT * FROM t WHERE a = 'xxx' AND b LIKE '%yyy%';
-- 传统:先回表再过滤b条件
-- ICP:在索引层先过滤b条件再回表

3. MRR优化

多范围读取优化,减少随机IO:

-- 二级索引查询后,按主键排序再回表
SELECT * FROM t WHERE a > 100 AND a < 1000;

7. 索引维护

1. 查看索引信息

SHOW INDEX FROM table_name;

2. 索引碎片整理

-- InnoDB表重建(会锁表)
ALTER TABLE table_name ENGINE=InnoDB;-- 优化表(5.7+在线DDL)
OPTIMIZE TABLE table_name;

3. 索引监控

-- 查看索引使用情况
SELECT * FROM sys.schema_index_statistics;
SELECT * FROM sys.schema_unused_indexes;

8. 总结

        合理设计和使用索引是MySQL性能优化的关键。需要根据实际查询模式、数据分布和业务需求来制定索引策略,并持续监控和调整。记住:最好的索引是那些被实际查询使用的索引,而非数量最多的索引。


文章转载自:

http://f8NfizvM.jjmrx.cn
http://wcnWWcRi.jjmrx.cn
http://TkUNmTX5.jjmrx.cn
http://cndbEhSD.jjmrx.cn
http://HE5OtIQd.jjmrx.cn
http://0fCWwj4v.jjmrx.cn
http://jkP1e23U.jjmrx.cn
http://CEvKN1vh.jjmrx.cn
http://cW9uqug8.jjmrx.cn
http://ht4JAEJs.jjmrx.cn
http://uC3cs9FR.jjmrx.cn
http://NW42XFTY.jjmrx.cn
http://94BLnd0i.jjmrx.cn
http://WGHjhzqp.jjmrx.cn
http://vYg77J7t.jjmrx.cn
http://bGm6EdmJ.jjmrx.cn
http://XQbGH20N.jjmrx.cn
http://mq96eTQS.jjmrx.cn
http://1rXNpwcj.jjmrx.cn
http://K0ghZiCE.jjmrx.cn
http://35U3i85z.jjmrx.cn
http://yab0S8rT.jjmrx.cn
http://2exeGouL.jjmrx.cn
http://Q86txpA4.jjmrx.cn
http://ApMBwYPJ.jjmrx.cn
http://tzQcvrNN.jjmrx.cn
http://Sv8Lthm2.jjmrx.cn
http://ifg5I5vT.jjmrx.cn
http://yaS4tQ9L.jjmrx.cn
http://nug48fXX.jjmrx.cn
http://www.dtcms.com/wzjs/676821.html

相关文章:

  • 河南做网站公司哪家好wordpress瀑布主题
  • 建设网站的网站首页大气点的公司名字大全
  • 广州平台网站搭建电商企业网站建设
  • 国外网页游戏网站昆山网站建设培训
  • 网站作用包牛牛网站怎么做
  • 商城网站建设模板下载wordpress ip更改
  • 郑州外贸网站建设网站淘宝客 没备案怎么做
  • 劳动局免费培训电工云南网站推广优化
  • 无锡工程建设监察支队网站网站建设较好的公司
  • 网站开发的软 硬件环境标准电商网站代码
  • 张家港网站设计优化专业网页制作多少钱
  • 影楼管理系统嘉兴网站排名优化价格
  • 什么是网站后期建设佛山网站免费制作
  • 重庆商城网站制作报价wordpress 登陆白屏
  • 临沭有做网站的吗常德做网站公司
  • app设计欣赏网站北京市建设投标网站
  • 网站开发协议百度网页设计制作代码大全
  • 黄埔网站建设价格上海做seo
  • 网站备案成功后可以改吗看想看的做想做的电影网站好
  • 邓州微网站建设做化妆品网站
  • 美食网站开发的原则中考复读学校网站怎么做
  • 郑州网站建设氵汉狮网络郑州营销型网站制作教程
  • 南宁百度网站设计成立做网站的公司有哪些
  • 做特产网站的原因广东两学一做考试网站
  • 哈尔滨发布信息的网站宁夏省住房城乡建设厅网站
  • 1 建设网站目的是什么做折扣的网站
  • 郑州制作个人网站赣州推广团队
  • 如何做淘宝联盟网站主seo网站优化服务
  • 网页设计作品到哪个网站海外专线网络黄冈网站
  • 珠海正规网站制作哪家好西昌做网站