索引在目录的前面还是后面 索引与目录有什么区别( 四 )


2.被频繁更新的字段应该慎重建立索引 。
虽然索引能带来查询上的效率 , 但是维护索引的成本也是不小的 。 如果一个字段不被经常查询 , 反而被经常修改 , 那么就更不应该在这种字段上建立索引了 。
3.尽可能的考虑建立联合索引而不是单列索引 。
因为索引是需要占用磁盘空间的 , 可以简单理解为每个索引都对应着一颗 B+树 。 如果一个表的字段过多 , 索引过多 , 那么当这个表的数据达到一个体量后 , 索引占用的空间也是很多的 , 且修改索引时 , 耗费的时间也是较多的 。 如果是联合索引 , 多个字段在一个索引上 , 那么将会节约很大磁盘空间 , 且修改数据的操作效率也会提升 。
4.注意避免冗余索引 。
冗余索引指的是索引的功能相同 , 能够命中索引(a, b)就肯定能命中索引(a) , 那么索引(a)就是冗余索引 。 如(name,city )和(name )这两个索引就是冗余索引 , 能够命中前者的查询肯定是能够命中后者的 在大多数情况下 , 都应该尽量扩展已有的索引而不是创建新索引 。
5.考虑在字符串类型的字段上使用前缀索引代替普通索引 。
前缀索引仅限于字符串类型 , 较普通索引会占用更小的空间 , 所以可以考虑使用前缀索引带替普通索引 。
使用索引的一些建议
?对于中到大型表索引都是非常有效的 , 但是特大型表的话维护开销会很大 , 不适合建索引?避免 where 子句中对字段施加函数 , 这会造成无法命中索引 。 ?在使用 InnoDB 时使用与业务无关的自增主键作为主键 , 即使用逻辑主键 , 而不要使用业务主键 。 ?删除长期未使用的索引 , 不用的索引的存在会造成不必要的性能损耗 MySQL 5.7 可以通过查询 sys 库的 schema_unused_indexes 视图来查询哪些索引从未被使用?在使用 limit offset 查询缓慢时 , 可以借助索引来提高性能
MySQL 如何为表字段添加索引?
1.添加 PRIMARY KEY(主键索引)
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
2.添加 UNIQUE(唯一索引)
ALTER TABLE `table_name` ADD UNIQUE ( `column` )
3.添加 INDEX(普通索引)
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
4.添加 FULLTEXT(全文索引)
ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
5.添加多列索引
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。