索引
主键(聚簇索引)和二级索引
主键的选择
1、他应该是unique(唯一)和not null(非空)的。
2、选择最小的可能键,因为所有的二级索引都会存储主键。所以如果主键很大,整个索引也会占用更多的空间。
3、选择一个单调递增的值。物理行是根据主键进行排序的,所以,如果你选择一个随机键。需要做多次行重排,这会导致性能下降。auto_increment 非常适合主键。
4、最好选择一个主键。如果找不到任何主键,请添加一个auto_increment列。如果你不选择任何内容,innodb会在内部生成一个带6字节行id的隐藏聚簇索引。
添加索引
alter table t_f add index i_cl1 (id,name);show create table t_f;
唯一索引
如果你希望索引是唯一的,你可以指定关键字unique
alter table t_f add unique index iu_col(name);
前缀索引
对于字符串列,可以创建仅适用列值的前导部分而非整个列的索引。
alter table t_f add index (last_name(10));
删除索引
alter table drop index last_name;
生成列的索引
对于封装在函数中的列不能使用索引。所以尽量避免将已被索引的列放入函数中。如果无法避免使用函数,请创建一个虚拟列并在虚拟列上添加索引。
alter table employees add hire_date_year year as (year(hire_date)) vartual,add index (hire_date_year);
不可见索引
如果你想删除未使用的索引,可以不立即删除,而是先将其标记为不可见,然后监控应用程序的行为,稍后在删除它。
explain select ...from ...;alter table t_f alter index last_name invisible;标记为可见alter table t_f alter index last_name visible;
降序索引
添加降序索引
alter table t_f add index i_name(first_name asc,last_name desc);
本公众号是个人学习工作笔记,希望大家发现问题能及时和我本人沟通,希望你与我共同成长。个人微信zgjt12306。

欢迎关注“自学Oracle”
最后修改时间:2019-12-17 12:30:49
文章转载自自学Oracle,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




