zoukankan      html  css  js  c++  java
  • 重谈主键和索引

    用了很多年的数据库 很多人可能连主键和索引都不会用,包括我在内

    首先要区别索引有聚集索引和非聚集索引

    主键可以是聚集索引也可以是非聚集索引,有些数据库默认把主键作为聚集索引

    不是任何主键都适合作为聚集索引

    举个简单的例子  自增列很适合做为聚集索引,因为物理顺序和自增列的顺序一致,试想,插入数据的时候,数据库是不是要省力的多?因为直接在最后面依次插入就可以了,但是有些时候,设计者可能不希望用自增列作为主键(对业务数据暴露的太裸露),当然可以再添加一列作为主键,将自增列作为聚集索引使用,这也是可以的,单如果没有自增列,比如用一个8位的随机数直接作为主键,那么这个主键还适合聚集索引么?

    假如这个数据表需要经常插入数据,进行写操作,因为8位随机数是没有任何排序规则的,每次数据写操作的时候,数据库都要重新找到属于他的位置,进行插入,这个就类似于插队,很明显排队要比插队更省力。频繁的插队更消耗数据库的性能。

    所以数据库的主键和索引你真的有认真思考过么?

  • 相关阅读:
    objcopy使用
    linux中的strip命令简介
    strace命令详解
    bash执行顺序:alias --> function --> builtin --> program
    Ubuntu下安装docker
    uvm中类继承和phase
    error和exception有什么区别?
    sleep() 和 wait() 有什么区别?
    CSS3实现环形进度条?
    请写出你最常见到的5个runtime exception?
  • 原文地址:https://www.cnblogs.com/njcxwz/p/10916324.html
Copyright © 2011-2022 走看看