# SCHEMA 设计建议 - 高性能 SCHEMA

+ 适用在 TiDB 数据库上新添加的表，或迁移的表兼容以下改造；特别需要注意原业务使用是否要求主键单调连续性
+ 建表时创建聚簇表
+ 主键使用具有较强随机性的列，或在使用自生成 ID，使用 AUTO_RANDOM 属性代替 AUTO_INCREMENT 来创建主键
+ 准确选择列的数据类型。能用整数型或日期类型的列，避免使用字符串类型
+ 避免创建无效的索引

```  
CREATE TABLE cluster_order (
id bigint(20) unsigned AUTO_RANDOM NOT NULL ,
code varchar(30) NOT NULL,
order_no varchar(200) NOT NULL DEFAULT '',
status int(4) NOT NULL,
cancle_flag int(4) DEFAULT NULL,
create_user varchar(50) DEFAULT NULL,
update_user varchar(50) DEFAULT NULL,
create_time datetime DEFAULT NULL,
update_time datetime DEFAULT NULL,
PRIMARY KEY (id) CLUSTERED
) ENGINE=InnoDB;
```
-------------------------------------------------------------
高性能 Schema
- 适用在 TiDB 数据库上新添加的表，或迁移的表兼容以下改造；特别需要注意原业务使用是否要求主键 ID 单调连续性
- 建表时创建聚簇表
- 主键使用具有较强随机性的列，或在使用自生成 ID，使用 AUTO_RANDOM 属性代替 AUTO_INCREMENT 来创建主键
- 准确选择列的数据类型。能用整数型或日期类型的列，避免使用字符串类型
- 避免创建无效的索引
```
CREATE TABLE cluster_order (
id bigint(20) unsigned AUTO_RANDOM NOT NULL ,
code varchar(30) NOT NULL,
order_no varchar(200) NOT NULL DEFAULT '',
status int(4) NOT NULL,
cancle_flag int(4) DEFAULT NULL,
create_user varchar(50) DEFAULT NULL,
update_user varchar(50) DEFAULT NULL,
create_time datetime DEFAULT NULL,
update_time datetime DEFAULT NULL,
PRIMARY KEY (id) CLUSTERED
) ENGINE=InnoDB;
```