MYSQL数据库索引的特点和影响

1、索引的类型
普通索引(场景) :最基本的索引
ALTER TABLE tablename ADD INDEX index_name('column')
唯一索引:索引列的值必须唯一,可以有空值
ALTER TABLE table_name ADD UNIQUE('column')

主键索引:主键索引属于一种特殊的索引,不允许有空值
ALTER TABLE table_name ADD PRIMARY KEY('column')

全文索引:字段里存放的是几个、甚至是多个单词构成的较大段的文字
ALTER TABLE table_name ADD FULLTEXT('column')

单列索引、多列索引
多列:ALTER TABLE table_name ADD INDEX index_name('column1','column2','column3')

组合索引:只有where条件中含有索引中的首列字段是才有效

2、负面影响:
1)虽然索引大大加快了查询的速度,但是却会降低表的更新的速度,比如INSERT、UPDATE、DELETE, 因为更新表的时候不仅要保存数据还要保存索引文件
2)建立索引会占用磁盘空间的索引文件

3、数据量小的时候建索引的影响:
1)增加了数据库的存储空间
2)对表进行写操作时同时会更新索引,会增加操作时间,所以只在必要的字段上加索引,没有必要的话最好不要加索引

4、数据量大的时候建索引的影响
1)增加读表的速度
2)可以提高系统的性能
3)加快数据的检索速度
5、什么时候建索引有意义,什么时候建索引没有意义
有意义:
1)表的主键、外键
2)经常与其他表进行连接的表,在连接字段上应该建立索引
3)在where中的字段
4)数据量比较大
5)group by 下的字段
无意义:
1)BLOB、CLOB字段
2)性别字段
3)频繁更新的字段
4)数据量小
6、explain解析sql语句
type访问类型
system:这是const连接的一个特例
const:很快
eq_ref:
ref
ref_or_null
index_merge
unique_subquery
index_subquery
range
index
ALL
7、索引创建的时候应该注意什么事项
1)索引不会包含有NULL值得列
2)使用短索引
3)索引列排序
4)like语句操作
一般情况下不鼓励使用like操作
5)不要在列上进行计算
6)不使用NOT IN和<>操作
7)尽可能不使用or关键字
8、索引在不同的存储引擎中是什么样的(实践)
Innodb:不支持FULLTEXT类型的索引
MYISAM:支持全文索引
MERGE: 不支持全文索引
MERMORY:不支持全文索引
9、 索引的存储方式
1)建立存储结点信息
2)建立附加的索引表来标识结点的地址

10、索引存储结构
索引的存储结构是以B+树结构来存储的,又称为索引树
索引节点:根节点和中间节点
叶子节点
hash索引
11、不同存储引擎下创建索引有何差异(innodb myisam)
1)myisam管理非事务表,它提供高速存储和检索,以及全文搜索能力,它的索引文件可以放置在不同的目录,平均分布,获得更快的速度。索引保存为三个文件
2)Innodb存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全,但是对比Myisam的存储引擎,Innodb会占用更多的磁盘空间已保留数据和索引。

12、不同的字段类型应该创建什么样的索引是否有必要创建索引
1)首先应考虑在where及order by 涉及的列加索引
2)float字段类型不能建索引
3)image、text、bit数据类型,不应该创建类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值