数据库建表规范

1.如何建立索引

建表时,建立的索引命名应遵循以下规则
主键索引命名为pk_字段名
唯一索引命名为uk_字段名
普通索引命名为idk_字段名
联合索引命名
pk_字段名1_字段名2…
或uk_字段名1_字段名2…
或idx_字段名1_字段名2…

建表时如何创建各种索引

//创建主键索引,注意,主键索引通常不需要显式的命名,mysql会自动生成默认名称
 PRIMARY KEY PK_SERI_NO_ACC_NO_BATCH_NO (`SERI_NO`,`ACC_NO`,`BATCH_NO`) USING BTREE,
//创建唯一索引
  UNIQUE KEY UK_DEPARTMENT (DEPARTMENT) USING BTREE,
//创建普通索引
  KEY IDX_NAME (NAME) USING BTREE, 
  或者INDEX IDX_NAME (NAME) USING BTREE,  
  说明:INDEXKEY等价	

实际示例

CREATE TABLE `ad_acc_entrie` (
  `ACC_NO` varchar(200) NOT NULL COMMENT,
  `SERI_NO` varchar(50) NOT NULL COMMENT,
  `BATCH_NO` varchar(20) NOT NULL COMMENT,
  `SSTRING01` varchar(200) DEFAULT NULL COMMENT,
  `MSTRING01` varchar(200) DEFAULT NULL COMMENT,
  `LSTRING01` varchar(255) DEFAULT NULL COMMENT,
  `INT01` int(11) DEFAULT NULL,
  `DECIMAL01` decimal(38,2) DEFAULT NULL COMMENT,
  `DATE01` datetime DEFAULT NULL COMMENT,
  PRIMARY KEY (`SERI_NO`,`ACC_NO`,`BATCH_NO`) USING BTREE,
  UNIQUE KEY UK_DEPARTMENT (DEPARTMENT) USING BTREE,
  KEY `IDX_ACCENTIRE_LINESERINO` (`LINE_ITEM_SERI`) USING BTREE,
  KEY `IDX_ACCENTRE_BUSNO` (`MSTRING09`) USING BTREE,
  KEY `UK_ACCENTRE_MSTRING01` (`MSTRING01`) USING BTREE,
  KEY `IDX_ACCENTRE_MSTRING03` (`MSTRING03`) USING BTREE,
  KEY `IDX_ACCENTRE_MSTRING05` (`MSTRING05`) USING BTREE,
  KEY `IX_AD_ACC_ENTRIE_SSTRING10` (`SSTRING10`) USING BTREE,
  KEY `IX_AD_ACC_ENTRIE_SSTRING07` (`SSTRING07`) USING BTREE,
  KEY `IDX_ADACCENTRIE_DATE01` (`DATE01`) USING BTREE,
  KEY `IDX_ACCENTRIE_BATCHNO_PZLX` (`BATCH_NO`,`SSTRING06`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='xxx表';

2.建立联合索引的规范

建立联合索引时,最常用的字段放在最左边。

联合索引生效情况:
假设建立联合索引(a,b,c,d,e)
进行查询:select * from 表 where d= ?,a = ? ,b = ? ,e = ?
查询优化器会怎么使用这个索引?
查询优化器会自动调整顺序。首先去尝试走a字段,a字段存在
然后去走b字段,b字段存在
然后去走c字段,c自动不存在,这个联合索引就走到这了,索引长度就是a,b这两个字段的长度了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值