mysql高级学习之索引的优劣势及规则使用

 更新时间:2021年03月11日 14:29:46   作者:m0_55886240  
这篇文章主要给大家介绍了关于mysql高级学习之索引的优劣势及规则使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、索引的优劣势

优点:可以快速的检索  、可以加快分组和排序

缺点: 占用储存空间、降低数据表的修改操作

二、索引的分类

主键索引 即主索引,根据主键 pk_clolum(length)建立索引,不允许重复,不允许空值
唯一索引 用来建立索引的列的值必须是唯一的,允许空值
普通索引 用表中的普通列构建的索引,没有任何限制
全文索引 用大文本对象的列构建的索引
全文索引 用大文本对象的列构建的索引;
组合索引 用多个列组合构建的索引,这多个列中的值不允许有空值。

三、使用索引的规则

1、适合建立索引的情况

  • 主键自动建立唯一索引;
  • 经常作为查询条件在 WHERE 或者 ORDER BY 语句中出现的列要建立索引;
  • 作为排序的列要建立索引;
  • 查询中与其他表关联的字段,外键关系建立索引;
  • 高并发条件下倾向组合索引;
  • 用于聚合函数的列可以建立索引,例如使用了 max(column_1)或者count(column_1)时的 column_1 就需要建立索引。

2、不适合建立索引的情况

  • 经常增删改的列不要建立索引;
  • 有大量重复的列不建立索引;
  • 表记录太少不要建立索引。

3、索引失灵的情况

  • 在组合索引中不能有列的值为 NULL,如果有,那么这一列对组合索引就是无效的;
  • LIKE 操作中,'%aaa%'不会使用索引,也就是索引会失效,但是‘aaa%'可以使用索引;
  • 在索引的列上使用表达式或者函数会使索引失效;
  • 在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效;
  • 在查询条件中使用 IS NULL 或者 IS NOT NULL 会导致索引失效;
  • 字符串不加单引号会导致索引失效;
  • 在查询条件中使用 OR 连接多个条件会导致索引失效,除非 OR 链接的每个条件都加上索引;
  • 如果排序的字段使用了索引,那么 select 的字段也要是索引字段,否则索引失效;
  • 尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引。

四、关于索引的SQL

1、创建表的时候添加索引

-- 创建表的时候添加索引
-- INDEX 关键词
-- myindex 索引的名称自己起的
-- (username(16))添加到哪一个字段上
CREATE TABLE mytable(
 ID INT NOT NULL,
 username VARCHAR(16) NOT NULL,
 INDEX myindex (username(16))
);

2、创建表过后添加索引

-- 添加索引
-- myindex索引的名字(自己定义)
-- mytable 表的名字
CREATE INDEX myindex ON mytable(username(16));
或者
ALTER TABLE mytable ADD INDEX myindex(username);

3 查看索引

-- mytable 表的名字
 show index FROM mytable;

4、删除索引

-- myindex索引的名字(自己定义)
-- mytable 表的名字
DROP INDEX myindex ON mytable;
或者
ALTER TABLE mytable DROP INDEX myindex;

总结

到此这篇关于mysql高级学习之索引的优劣势及规则使用的文章就介绍到这了,更多相关mysql高级索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql语法时采用了双引号““的错误问题

    mysql语法时采用了双引号““的错误问题

    错误原因:使用双引号定义表名和列名导致MySQL报错,应使用反引号,修改方案:将双引号改为反引号,避免语法冲突,总结:在MySQL中,正确使用反引号引用标识符,确保SQL语句符合MySQL语法规则
    2024-10-10
  • mysql 1130错误,无法登录远程服务的解决

    mysql 1130错误,无法登录远程服务的解决

    这篇文章主要介绍了mysql 1130错误,无法登录远程服务的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • MySQL使用的常见问题解决与应用技巧汇总

    MySQL使用的常见问题解决与应用技巧汇总

    这篇文章主要给大家总结介绍了我们平时在使用MySQL遇到的常见问题解决与应用技巧的相关资料,包括忘记MySQL的root密码、如何处理 myisam 存储引擎的表损坏、数据目录磁盘空间不足的问题等等问题,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-11-11
  • 窥探mysql存储过程细节

    窥探mysql存储过程细节

    这篇文章主要为大家详细介绍了mysql存储过程细节,对mysql存储过程感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 详解MySQL中事务的持久性实现原理

    详解MySQL中事务的持久性实现原理

    这篇文章主要介绍了详解MySQL中事务的持久性实现原理,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • 解决Windows环境下安装 mysql-8.0.11-winx64 遇到的问题

    解决Windows环境下安装 mysql-8.0.11-winx64 遇到的问题

    这篇文章主要介绍了Windows环境下安装 mysql-8.0.11-winx64 遇到的问题及解决办法 ,需要的朋友可以参考下
    2018-10-10
  • MySQL存储引擎中MyISAM和InnoDB区别详解

    MySQL存储引擎中MyISAM和InnoDB区别详解

    存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)
    2016-12-12
  • 查看修改MySQL表结构命令

    查看修改MySQL表结构命令

    这篇文章主要介绍了查看修改MySQL表结构命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 允许任意IP访问mysql数据库的方法详解

    允许任意IP访问mysql数据库的方法详解

    MYSQL默认只能本地连接,即127.0.0.1和localhost,其他主机IP无法访问数据库,那么如何允许任意IP访问mysql数据库,所以本文小编将给大家介绍允许任意IP访问mysql数据库的方法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 与MSSQL对比学习MYSQL的心得(七)--查询

    与MSSQL对比学习MYSQL的心得(七)--查询

    在这个《与MSSQL对比学习MYSQL的心得》系列里面,我一直都把MYSQL跟SQLSERVER进行比较,相互进行比较是学习一样东西比较好的方法
    2014-08-08

最新评论