暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql 语句基础(三)

自学Oracle 2019-10-24
509

索引

主键(聚簇索引)和二级索引

主键的选择

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论