在DB2中是否可以在CREATE TABLE语句内直接定义索引?
可以在CREATE TABLE语句中同步创建索引,主流关系型数据库均支持该语法
- 主键索引本身就是建表阶段最常定义的索引,声明主键约束时会自动创建对应主键索引,示例:
CREATE TABLE `user` ( id INT PRIMARY KEY AUTO_INCREMENT, -- 此处定义主键的同时自动创建主键索引 username VARCHAR(50) NOT NULL );
- 普通索引、唯一索引、联合索引都可以在建表时直接声明,无需单独执行
CREATE INDEX语句,示例:
CREATE TABLE `order` ( id INT PRIMARY KEY AUTO_INCREMENT, user_id INT NOT NULL, phone VARCHAR(11) NOT NULL, create_time DATETIME NOT NULL, UNIQUE KEY uk_phone (phone), -- 定义唯一索引 KEY idx_user_create_time (user_id, create_time) -- 定义普通联合索引 );
注意不同数据库的语法细节存在微小差异:比如MySQL支持
KEY/INDEX关键字通用,PostgreSQL需要使用INDEX关键字,Oracle可直接在CREATE TABLE结构中声明索引类约束。
这种同步建索引的方式适合表结构初始化场景,能减少后续单独创建索引的操作步骤。
内容的提问来源于stack exchange,提问作者Manivannan N
相关产品推荐
相关产品推荐

