`
kaozjlin
  • 浏览: 117440 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

mysql索引优缺点及注意事项

 
阅读更多
优点
 
有了索引.对于记录数量很多的表,可以提高查询速度.
 
缺点
 
索引是占用空间的.
 
索引会影响update insert delete速度
 
ALERT!!!
 
1
索引要创建在where和join用到的字段上.
 
2
以下操作符号可以应用索引
:<,<=,=,>,>=,BETWEEN,IN,LIKE不以%_开头
以下需要注意不使用索引
<>, NOT IN, LIKE %_开头
<> 可以用 a>1 or a<3 代替,NOT IN 可以用NOT exists代替
 
3
在使用max() min()时最好加上索引.
 
4
单索引要创建在确实需要的地方.
多列索引 有最佳左前缀特性 所以尽量左边的字段是最常用的.
 
6
索引不会包括有NULL值,就是有NULL,索引就失效
 
7
使用短索引,一个字段字太多,可以建立部分索引,只取前十个字.节约空间.
 
8
不要在列上运算.例如:where MD5("password") = "myz"
 
9
explain select * from myz 来测试一下语句的效率...
输入 explain select * from customer; 后,出现一张表,个行的意思如下:
table-显示此行数据属于哪张表;type-重要的一列,显示使用了何种连接,从好到差依次为const、eq_ref、ref、range、index、all;possible_keys-可以应用在这张表中的索引,如果为null,则表示没有可用索引;key-实际使用的索引,如为null,表示没有用到索引;key_len-索引的长度,在不损失精确度的情况下,越短越好;ref-显示索引的哪一列被使用了,如果可能的话,是个常数;rows-返回请求数据的行数;extra-关于mysql如何解析查询的额外信息,下面会详细说明。
 
type的描述:system-表只有一行,这是const连接类型的特例;const-表中一个记录的最大值能够匹配这个查询(索引可以是主键或唯一索引)。因为只有一行,这个值实际就是常数,因为mysql先读这个值,再把它当作常数对待;eq_ref-从前面的表中,对每一个记录的联合都从表中读取一个记录。在查询使用索引为主键或唯一索引的全部时使用;ref-只有使用了不是主键或唯一索引的部分时发生。对于前面表的每一行联合,全部记录都将从表中读出,这个连接类型严重依赖索引匹配记录的多少-越少越好;range-使用索引返回一个范围中的行,比如使用>或<查找时发生;index-这个连接类型对前面的表中的每一个记录联合进行完全扫描(比all好,因为索引一般小于表数据);all-这个连接类型多前面的表中的每一个记录联合进行完全扫描,这个比较糟糕,应该尽量避免。
 
extra行的描述:distinct-mysql找到了域行联合匹配的行,就不再搜索了;
not exists-mysql优化了left join,一旦找到了匹配left join的行,就不再搜索了;
range checked for each-没找到理想的索引,一次对于从前面表中来的每一个行组合;
record(index map: #)-检查使用哪个索引,并用它从表中返回行,这是使用索引最慢的一种;
using filesort-看到这个就需要优化查询了,mysql需要额外的步骤来发现如何对返回的行排序。他根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行。
using index-列数据是从单单使用了索引中的信息而没有读取实际行的表返回的,这发生在对表的全部的请求列都是同一个索引时;
using temporary-看到这个就需要优化查询了,mysql需要创建一个临时表来查询存储结果,这通常发生在多不同的列表进行order by时,而不是group by;
where used-使用了where从句来限制哪些行将与下一张表匹配或是返回给用户。如不想返回表中用的全部行,并连接类型是all或index,这就会发生,也可能是查询有问题。
 
10
查看索引信息
show index from tablename;
分享到:
评论

相关推荐

    数据库索引的优缺点及使用时的注意事项.docx

    **使用时的注意事项:** 1. **避免使用不等号和函数**:如`!=`、`&gt;`、`、`BETWEEN`、`LIKE`、`REGEXP`等,这些操作可能导致索引无法被有效利用。 2. **JOIN操作需匹配数据类型**:在JOIN中,主键和外键的数据类型...

    MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项

    以下的文章主要介绍的是MySQL索引的缺点以及MySQL索引在实际操作中有哪些事项是值得我们大家注意的,我们大家可能不知道过多的对索引进行使用将会造成滥用。因此MySQL索引也会有它的缺点: 虽然索引大大提高了查询...

    有关mysql面试题和索引原理理解

    本文将从索引的定义、索引的优点和缺点、索引的使用场景、索引的类型、MYSQL 索引的注意事项和索引原理等多方面对 MYSQL 索引进行了深入的探讨。 一、索引的定义 索引是类似于书籍的目录,想找到一本书的某个特定的...

    数据库索引那些事(数据库索引原理)

    "数据库索引那些事(数据库索引原理)" 数据库索引是数据库的一种对象,它保存数据库...数据库索引是数据库查询性能优化的重要手段,它可以提高查询速度、减少 I/O 操作,但是也需要注意索引的使用注意事项和优缺点。

    Mysql索引的类型和优缺点详解

    MySQL索引是数据库管理系统中用于加速数据检索的重要工具。索引是一种特殊的数据结构,它存储了数据表中记录的部分信息,使得查询时可以快速定位到所需数据,从而提高查询效率。然而,索引并非适用于所有场景,它们...

    详解mysql建立索引的使用办法及优缺点分析

    **创建索引的注意事项:** 1. **选择合适的字段**:通常在频繁查询、作为主键、参与连接、需要排序或根据范围搜索的列上创建索引。 2. **避免过度索引**:并非所有列都需要索引,如更新频繁、数据量小、数据类型大...

    Mysql主从、主主复制详解

    #### 五、注意事项 - **数据一致性**:在主主复制模式下,需要特别注意数据的一致性问题,避免出现数据冲突。 - **网络延迟**:网络延迟会影响复制的效率,尤其是在跨地域部署的情况下。 - **性能影响**:复制会...

    MYSQL

    4.6.1 Linux RPM注意事项 4.6.2 构造客户程序 4.6.3 系统特定的问题 4.6.3.1 Linux 注意事项 4.6.3.2 HP-UX 注意事项 4.7 安装 MySQL源代码分发 4.7.1 快速安装概述 4.7.2 运用补丁...

    MySQL中文参考手册

    * 2 MySQL 邮件列表及如何提问或报告错误 o 2.1 MySQL邮件列表 o 2.2 提问或报告错误 o 2.3 怎样报告错误或问题 o 2.4 在邮件列表上回答问题的指南 * 3 MySQL的许可证和技术支持 o 3.1 MySQL的许可证政策 o ...

    MySQL中文参考手册.chm

    4.6.2 构造客户程序 4.6.3 系统特定的问题 4.6.3.1 Linux 注意事项 4.6.3.2 HP-UX 注意事项 4.7 安装 MySQL源代码分发 4.7.1 快速安装概述 4.7.2 运用补丁 4.7.3 典型的...

    2017最新老男孩MySQL高级专业DBA实战课程全套【清晰不加密】,看完教程月入40万没毛病

    04-回顾MySQL主从复制配置步骤及注意事项.avi 05-回顾MySQL主从复制原理要点.avi 06-企业场景MySQL主从复制最牛部署方案.avi 07-一键获取全备及binlog位置多种方案讲解.avi 08-不停主库一键批量配置MySQL主从复制...

    mysql面试题 mysql面试题mysql面试题

    本文总结了MySQL面试题中的知识点,包括索引、MyISAM和InnoDB、事务、数据库设计、索引使用注意事项、CHAR和VARCHAR、NOW()和CURRENT_DATE()、视图、游标和存储过程、drop、delete和truncate等。

    mysql高级部分--包含索引建立优化_函数_存储过程_触发器_及游标

    **注意事项:** - 触发器可能会导致死锁或递归调用问题。 - 过度使用触发器可能会影响性能。 #### 四、游标(Cursor) **定义:** 游标是用于处理查询结果集的一种机制,可以逐行读取结果集中的数据。 **用途:**...

    MySQL常见面试题.pdf

    MySQL常见面试题.pdf MySQL 数据库索引是数据库性能优化的关键技术之一。...同时,使用索引需要遵循一些注意事项,例如在经常需要搜索的列上创建索引,在经常使用在WHERE子句中的列上创建索引等。

    mysql数据库性能优化

    - **优缺点**:查询缓存可以提高查询性能,但在数据频繁变动的场景下可能会导致缓存失效的问题。 ##### 3. 临时表 - **定义**:在执行某些复杂查询时,可能需要创建临时表来存储中间结果。 - **注意事项**:过度...

    High Performance MySQL_ Optimization.pdf

    书中可能会讨论这些架构模式的实现方式和注意事项,帮助读者理解如何构建可扩展的数据库系统。 5. **内存管理与缓存**:MySQL的缓冲池(如InnoDB Buffer Pool)管理是影响性能的重要因素。书中可能讲解如何配置和...

    mysql5 培训 PPT beta1

    - **索引原理**:B树、B+树等索引结构的原理及优缺点。 - **索引类型**:主键索引、唯一索引、全文索引等不同类型的索引及其应用场景。 - **视图创建与使用**:VIEW的定义及其在查询优化中的作用。 #### 十、存储...

    MySQL.zip_mysql导入_mysql导出

    在压缩包子文件的文件名称列表中,有一个名为“MySQL.docx”的文件,这可能是一个包含关于如何使用ZIP文件进行MySQL导入导出的文档,详细步骤、注意事项以及可能的优化策略可能都在其中。 总的来说,正确且有效地...

    如何把sqlserver数据迁移到mysql数据库及需要注意事项

    本文主要讨论的是如何将数据从SQL Server迁移到MySQL数据库,以及在这个过程中需要注意的关键点。 首先,我们需要了解SQL Server与MySQL之间的数据类型差异。SQL Server中的一些数据类型在MySQL中可能有不同的对应...

Global site tag (gtag.js) - Google Analytics