mysql索引

总结:

选择优化的数据类型 

1: 更小的通常更好 

2: 简单就好

3: 尽量避免NULL

 

缓存表和汇总表: 为了提高性能,创建一张完全独立的汇总表或缓存表

 

物化视图 : 预先计算并存储在磁盘上的表,可以通过各种各样的策略刷新和更新

 

alter table 优化:

避免执行需要好长时间,可以通过2种技巧

1: 先在一台不提供服务的机器上执行alter table,然后和提供服务的主库切换

2: 创建一张和源表无关的新表,然后通过重命名和删表操作交换两张表

只修改默认值的时候

1: alter table film modify column a tinyint(3) not null default 5 

2: alter table film alter column a set default 5 (效率高)

 

mysql 中包含的索引类型

b-tree 索引

哈希 索引

空间数据 索引

全文 索引

 

 

一、 单列索引和多列索引

 mysql 在查询是只能使用一个索引,如何有多个单列索引,mysql会试图选择一个最严格的索引,但没有多列够成的索引限制能力强。

 

二、  最左前缀

如 : index (col1,col2,col3)

则: 下面三种,都可以使用到索引

         col1,col2,col3

         col1,col2

         col1

 

三、前缀索引和索引选择性

 1: 索引选择性, 不重复的索引值  /  数据表的记录总数 

 

四、索引顺序

 1: 将选择性最高的列放到索引最前面,当不需要考虑排序和分组时,将选择性最高的列放在前面通常是很好的。

 

五、聚簇索引

1: 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式,由于数据行和相邻的键值紧凑地存储在一起,一个表只能有一个聚簇索引。

优点: 可以把索引和相关数据保存在一起,数据访问块

缺点: 插入速度依赖于插入顺序,更新会强制InnoDB将每个被更新的行移动到新的位置

 

六、覆盖索引

1: 根据查询的where条件来创建合适的索引,不过这只是索引优化的一个方面。

 

如果一个索引包含所有需要查询的字段的值,我们就称之为“覆盖索引”,这样的话,只需要返回扫描索引,而无需在扫描数据行。

 

 

七、Mysql 实现排序的两种方式

设计索引时应该尽可能地同时满足排序、查找行

 

规则

    1: 只有当索引的列顺序和Order by子句的顺序完全一致,并且所有列的排序方向都一样时,Mysql才能够使用索引来对结果做排序。

    2:当需要关联多张表,则order by 子句引用的字段全部为第一表时,才能使用索引做排序。

    3: 需要满足索引的最左前缀。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值