建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复
发表于2021年03月18日 21:59:04 200 1
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 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;


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

snowofsummer

发帖: 48粉丝: 2

发消息 + 关注

发表于2021年03月20日 07:27:31
直达本楼层的链接
沙发
显示全部楼层

mark

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200