`

mysql分布式思维(五)- 索引优化

阅读更多

 1.索引的利弊

  • 通过索引列查询数据,能够提高数据检索的效率,降低数据库的IO成本
  • 通过索引列对数据进行排序,降低数据排序的成本,降低了CPU的消耗

  • 假设表a 其中有列 column ca  给其创建索引indx_a_ca
    •  每次更新ca的操作,都会调整因为更新所带来的键值变化后的索引信息
    • 这样就会增加IO损耗,索引列也是要占用空间的,a列数据的增多,
    • indx_a_ca索引占用的空间也会不断增长。所以索引还会带来存储空间资源的消耗。

2.mysql的索引分类

  •  B-Tree索引
  •  Hash索引
    • hash索引只能满足"="、"in" <>查询,不能支持范围查询
    • hash索引无法被利用进行排序操作
    • hash索引不能利用部分索引键查询
    • hash索引不能避免表扫描
  • full-text索引
    • 只有myisam存储引擎支持--->只有char 、varchar、text支持
  • R-Tree索引
    • 主要解决空间数据检索问题,极少使用

3.如何判断是否需要创建索引

  • 频繁作为查询条件的字段应该创建索引
  • 唯一性太差的字段不适合单独创建索引
    • 该字段可能重复成千上万
    • 即使你创建了索引优化器模块是不会选择使用的
    • 会有极大的性能问题  有很多重复值,会带来大量的随机IO甚至是重复IO
  • 更新非常频繁的字段不适合创建索引
    • 不仅仅更新表中的数据,还需要更新索引数据  IO访问增大
  • 不会出现在where字句中的字段不该创建索引
  • 单键索引还是组合索引

 

 4.mysql中索引的限制(下面的原理在oracle当中基本都成立)

 

  • 是否用到了索引可以查看执行计划
  • 在任何索引列上做计算、函数、类型转换(哪怕是自动的)都会使得索引失效而转向全表扫描操作
    • 不要在索引列上做任何操作因为可能为导致索引失效
  • mysql 在使用不等于(!= or  <>)的时候无法使用索引会导致全表扫描
  • is null ,is not null 也无法使用索引
  • join 语句中join条件字段类型不一致的时候mysql无法使用索引
  • 模糊查询的时候(like操作)如果以通配符开头('%abc...')mysql索引失效会变成全表扫描的操作
  • 如果使用的是hash索引,在做非等值连接时候无法使用索引,会是全表扫描的操作
    • (select * from t where t>5)效率低于(select * from t where t>=6)
  • 在mysql中BLOB和Text类型的列只能创建前缀索引
  •  MyISAM存储引擎的话索引键长度总和不能超过1000字节
  • 当有唯一性索引和非唯一性索引都存在时,往往只会选择唯一性索引
  • 组合索引,查询时组合索引第一列出现的时候会使用索引

注意:大家可以通过查看执行计划,来验证上面的结论

 

  5.使用索引的一些建议

对于单键索引,尽量选择针对当前query过滤性更好的索引

在选择组合索引的时候,当前Query中过滤性最好的字段在索引字段顺序中,位置越靠前越好

 在选择组合索引的时候,尽量选择可以能够包含当前query中的where字句中更多字段的索引

尽可能通过分析统计信息和调整query的写法来达到选择合适索引的目的。减少通过使用Hint认为控制索引的选择,如果使用Hint会使得后期维护成本比较高

0
5
分享到:
评论

相关推荐

    mysql-connector-java-5.0.8-bin.jar

    7. **支持多种数据库特性**:如存储过程、触发器、视图等,以及MySQL特有的特性如分区表、全文索引等。 在实际应用中,开发者通常将mysql-connector-java-5.0.8-bin.jar添加到项目的类路径中,然后通过以下代码示例...

    基于MySQL分布式数据库系统同步分析与实现.pdf

    在设计和实现MySQL分布式数据库系统时,规范化和索引是提高数据存储和检索效率的关键。规范化可以减少数据冗余,降低更新异常和插入异常的风险,提高数据一致性。索引则可以显著提升查询速度,尤其对于大型数据集,...

    MySQL分布式数据库架构及企业实践-基于Mycat中间件

    ### MySQL分布式数据库架构及企业实践-基于Mycat中间件 #### 一、MySQL分布式数据库架构概述 在当今的大数据时代背景下,随着业务量的不断增长,传统的单体数据库架构已经无法满足高并发、大数据量处理的需求。...

    mysql-connector-java-5.1.38.jar

    9. **XA事务**:对于分布式事务处理,MySQL Connector/J提供了对X/Open Distributed Transaction Processing (DTP)模型的支持,实现XA协议。 10. **配置选项**:用户可以通过URL、系统属性或连接参数来配置连接行为...

    MySQL分布式数据库中间件Mycat性能调优指南

    MySQL分布式数据库中间件Mycat是一款广泛应用于大数据处理和高并发场景的重要工具,它通过将数据分布到多个物理节点上,实现了数据的水平扩展。在实际应用中,Mycat的性能调优对于系统的整体效率至关重要。本指南将...

    分布式数据库-信创数据库-国产数据库与传统mysql的兼容性测试案例

    在分布式数据库领域,尤其是针对信创(信息技术应用创新)环境下的数据库,兼容性测试是确保系统稳定性和功能完整性的关键环节。本文将重点讨论国产数据库与传统MySQL的兼容性测试案例,主要集中在MySQL模式的DDL...

    MySQL高级_思维导图

    本资料"MySQL高级_思维导图.pdf"深入探讨了MySQL的一些高级主题,帮助读者理解其核心机制和优化策略。以下是根据提供的思维导图内容展开的详细知识点: 1. **MySQL的架构介绍** MySQL通常采用客户端/服务器架构,...

    基于SpringCloud+ElasticSearch+Vue实现的分布式微服务-全品类购物商城+源代码+文档说明+sql数据库

    开发工具: Idea + WebStorm + Mysql5.6 + Redis + RabbitMQ + ElasticSearch + Nginx反向代理服务器 这是一个基于SpringCloud分布式微服务框架开发的一个购物商城网站,前端开发技术vue实现ui。项目工程量很大,...

    新浪:基于MySQL的分布式数据库实践1

    "新浪基于MySQL的分布式数据库实践1" 分布式数据库实践是指在多个服务器上部署和管理数据库,以提高数据库的性能、可扩展性和可靠性。在这个实践中,新浪使用了基于MySQL的分布式数据库实践,实现了高性能、可扩展...

    MySQL分布式实战宝典 视频教程 下载 因为太大存百度云盘2.zip

    《MySQL分布式实战宝典》视频教程是一套深入探讨MySQL分布式技术的专业课程,旨在帮助学习者掌握如何在实际项目中设计和部署高效的分布式数据库系统。在本教程中,你将了解到MySQL分布式的核心概念、最佳实践以及...

    mysql-5.5.36-win32数据库安装.zip

    - **InnoDB存储引擎增强**:MySQL 5.5对InnoDB存储引擎进行了大量优化,包括更好的并发处理能力,支持更大的行内数据存储,以及更高效的全文索引。 - **Performance Schema**:引入了性能模式,提供了一个无侵入式...

    mysql分布式解决方案.pdf

    MySQL分布式解决方案是针对大型互联网应用的数据存储需求而设计的一种架构,它可以提高数据库系统的可扩展性、可用性和性能。以下是对MySQL分布式解决方案的详细说明: ### 分布式架构基础 MySQL分布式解决方案...

    mysql-connector-java-6.0.3-bin.jar

    此外,了解和使用MySQL特定的性能优化策略,如索引、查询优化等,也是提高效率的关键。 7. **兼容性** `mysql-connector-java-6.0.3`适用于Java 6及更高版本,与MySQL服务器5.x和8.x系列兼容。但请注意,不同版本...

    MySQL学习笔记5-数据库性能优化与扩展.md

    本篇学习笔记将深入探讨如何通过索引优化、查询优化以及缓存利用等多种技术手段来提升MySQL数据库的性能,并介绍数据库的扩展策略(包括垂直扩展和水平扩展)以支持更高的并发量和更大的数据规模。 #### 性能优化 ...

    【MySQL技术资料】-(机构内训资料)MySQL优化学习思维笔记

    这份资料将涵盖多个关键知识点,帮助你构建全面的MySQL优化思维。 1. **索引优化**:索引是提高查询速度的关键。理解B-Tree、Hash和Full-text等不同类型的索引,以及如何选择合适的索引策略至关重要。注意避免索引...

    mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz 百.度.网.盘地址及密码

    - **索引优化**:合理设计和使用索引可以显著提高查询速度。 - **查询优化**:避免全表扫描,减少不必要的 JOIN 操作。 - **分区策略**:对于大数据量的表,采用合适的分区策略可以提高查询性能。 - **硬件升级**:...

    MySQL-server-5.5.21-1.sles11.x86_64.rar

    3. **FederatedX存储引擎**:这是一个改进的Federated存储引擎,允许数据在不同MySQL服务器之间透明地分布和联合查询,对于分布式数据库环境非常有用。 4. **Full-text Search优化**:5.5版增加了对部分单词搜索的...

    MySQL分布式实战宝典 视频教程 下载 因为太大存百度云盘4.zip

    【MySQL分布式实战宝典 视频教程 下载 因为太大存百度云盘4.zip】是一个包含关于MySQL分布式系统的详细教学资源的压缩包。虽然没有具体的标签,但从标题和描述中我们可以推测,这个教程可能涵盖了MySQL数据库在...

    MySQL分布式实战宝典 视频教程 下载 因为太大存百度云盘1.zip

    【MySQL分布式实战宝典 视频教程 下载 因为太大存百度云盘1.zip】这一压缩包文件中,显然包含了一个关于MySQL分布式系统的实战视频教程。从描述中的链接...

    mysql-5.5.18-win32安装包及教程

    MySQL 5.5.18是该系列的一个重要版本,提供了许多性能优化和新特性。本文将深入探讨MySQL 5.5.18在Windows 32位环境下的安装过程,并提供相关教程的关键要点。 一、MySQL 5.5.18的新特性 1. 性能提升:MySQL 5.5...

Global site tag (gtag.js) - Google Analytics