在数据库中建立索引通常是为了提高查询性能,通过创建索引可以加快对表中数据的访问速度。以下是建立索引的基本步骤和注意事项:
步骤
选择合适的字段 选择在查询中经常作为条件的字段来创建索引。
索引应有助于加速WHERE子句、JOIN操作、ORDER BY和GROUP BY子句中的查询。
选择合适的索引类型
B树索引: 适用于大多数情况,包括范围查询。 哈希索引
全文索引:适用于全文搜索。
主键索引:表中每一行的唯一标识,通常自动创建。
唯一索引:索引列的值必须唯一,允许有空值。
创建索引 在创建表时,可以使用`CREATE TABLE`语句的`INDEX`关键字指定索引。
对于已存在的表,可以使用`ALTER TABLE`语句的`ADD INDEX`关键字添加索引。
使用`CREATE INDEX`语句单独创建索引。
使用`PRIMARY KEY`关键字创建主键索引。
注意事项
维护成本:
索引需要随着表中的数据变化(插入、更新、删除)而更新,这会带来额外的开销。
索引选择:应根据查询模式选择合适的索引类型。
监控性能:定期监控索引的性能,确保它们为查询优化做出贡献。
示例
假设有一个名为`zaho_user`的表,包含以下列:
```
CREATE TABLE `zaho_user` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`u_name` varchar(20) NOT NULL DEFAULT '',
`u_sex` tinyint(4) NOT NULL DEFAULT '1',
`u_desc` varchar(200) NOT NULL DEFAULT '',
ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT '用户表'
)
```
为`u_name`字段添加普通索引:
```
ALTER TABLE `zaho_user` ADD INDEX index_username (`u_name`)
```
为`u_id`字段添加主键索引:
```
ALTER TABLE `zaho_user` ADD PRIMARY KEY (`u_id`)
```
创建多列索引:
```
CREATE INDEX mytable_categoryid ON mytable (`category_id`)
```
以上步骤和示例可以帮助你在数据库中建立索引。