首页 > 数据库 >MySQL 索引的缺陷和注意事项

MySQL 索引的缺陷和注意事项

时间:2023-01-28 10:56:49浏览次数:53  
标签:like 使用 索引 注意事项 MySQL 排序 where

一、索引存在的缺陷

1. 虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERT、UPDATE和DELETE;因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件

2. 建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快

总而言之,索引只是提高效率的一个因素,如果你的 MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。

二、使用索引的注意事项

(1). 索引不会包含有NULL值的列

(2). 尽量使用短索引

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

(3). 索引列排序

MySQL查询只使用一个索引,因此如果 where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。

(4). like语句操作

一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引

(5). 不要在列上进行运算
例如:select * from users where YEAR(adddate)<2007;
将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:
select * from users where adddate<‘2007-01-01’;

(6). 不使用NOT IN和<>操作

标签:like,使用,索引,注意事项,MySQL,排序,where
From: https://www.cnblogs.com/codeboy-top/p/15603231.html

相关文章

  • MySQL 报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket
    MySQL报错:ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket一、错误现场还原:下面我们通过三种方式来连接,然后观察提示的错误信息:1、直接使用......
  • 唯一/普通索引的选择?change buffer
    changebuffer一块存储了更新操作的缓冲区。它存在于MySQL的bufferpool中。它是怎么作用的:对于普通索引,如果更新操作的目标page页不在内存中,那么会先将这些更新操......
  • MySQL在线DDL gh-ost使用总结
    背景:作为一个DBA,大表的DDL的变更大部分都是使用Percona的pt-online-schema-change,本文说明下另一种工具gh-ost的使用:不依赖于触发器,是因为他是通过模拟从库,在rowbinlo......
  • 一分钟带你了解mySql执行SQL的内部原理
    1、把MySQL当个黑盒子一样执行SQL语句我们知道执行了insert语句之后,在表里会多出来一条数据;执行了update语句之后,会对表里的数据进行更改;执行了delete语句之后,会把表里的......
  • OI线下比赛注意事项
    一些经验之谈。I.学会使用Linux虚拟机在日常生活中,我们使用的电脑系统通常是Windows,线下考场中的电脑也几乎都使用Windows系统,而Linux系统我们一般很少接触到......
  • mysql触发器
    --mysql触发器触发器是想要某条语句或某些语句在事件发生时自动执行,而执行的时间可以在"事件发生"之前或之后。创建触发器需要唯一的触发器名;触发器关联的表(即该表被......
  • MySQL 安装(源码安装模式)
    ​​MySQL安装(RPM安装模式)及目录结构​​​​MySQL安装(二进制安装模式)​​MySQL安装(源码安装模式)本篇使用mysql源码来安装,稍微比较麻烦。 CentOSrelease5.11+mysql-5......
  • SqlServer 与 MySQL 基本操作语句对比
    继上篇 ​​MySQL基本操作语句​​ 后,个人测试和补充了 SqlServer与MySQL的 基本操作语句对比,主要是对比SQL命令的一些差异,不作更多说明。(由于mysql没有系统学习过......
  • MySQL 自动备份还原工具 MySQL-AutoXtraBackup
    MySQL-AutoXtraBackup是Percona实验室中的开源工具,是基于 xtrabackup和autoxtrabackup备份的备份工具。如果不是很熟悉 AutoXtraBackup,个人觉得还不如使用 autoxtr......
  • MongoDB 基础(三)mongodb 中的索引使用
    MongoDB中的索引和其他数据库索引类似,也是使用B-Tree结构。MongoDB的索引是在collection级别上的,并且支持在任何列或者集合内的文档的子列中创建索引。 下面是官方给出的一......