mysql建立索引UNIQUE_INDEX_FULLTEXT区别

本文详细解释了MySQL中的PRIMARY、UNIQUE、INDEX和FULLTEXT索引的使用场景与区别,提供了实例演示,并强调了索引如何提高查询效率。
  • mysql建立索引UNIQUE_INDEX_FULLTEXT区别
  • 来源:http://www.greensoftcode.net/ 
  •  PRIMARY  主键,一个表中只能有一个主键,
             该键值不能为 NULL ,不能重复

    UNIQUE  唯一键(或称 第二辅助键),一个表中可以有多个
            该键值不能重复,但是可以有多个记录值为 NULL

    INDEX   普通的索引

    FULLTEXT  全文索引,


    INDEX : 普通的索引 与FULLTEXT  全文索引 的使用


    不过 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以


    语法:
    ALTER  TABLE  表名  ADD   [ UNIQUE | FULLTEXT | SPATIAL ]   INDEX  索引名(属性名  [ (长度) ]  [ ASC | DESC]);

    例子:
    ALTER  TABLE  test_1  ADD  INDEX  true_name ( truename(20) ) ;

    建立索引可以提高查询效率

PRIMARY  主键,一个表中只能有一个主键,
         该键值不能为 NULL ,不能重复




·详情 http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html

### 创建索引的 SQL 语句 在 MySQL 中,可以通过 `CREATE INDEX` 和 `ALTER TABLE` 语句来创建索引索引可以提升查询效率,类似于书籍的目录结构,使数据库能够更快地定位特定数据行。 #### 1. 创建普通索引 普通索引是最基本的索引类型,没有唯一性约束。 ```sql CREATE INDEX index_name ON table_name (column_name); ``` 例如,为 `employees` 表的 `last_name` 列创建一个普通索引: ```sql CREATE INDEX idx_lastname ON employees (last_name); ``` 也可以使用 `ALTER TABLE` 来添加普通索引: ```sql ALTER TABLE employees ADD INDEX idx_lastname (last_name); ``` #### 2. 创建唯一索引 唯一索引确保索引列中的所有值都是唯一的,但允许有空值(NULL)。 ```sql CREATE UNIQUE INDEX unique_index_name ON table_name (column_name); ``` 例如,为 `employees` 表的 `employee_id` 列创建唯一索引: ```sql CREATE UNIQUE INDEX idx_employee_id ON employees (employee_id); ``` 也可以使用 `ALTER TABLE` 来添加唯一索引: ```sql ALTER TABLE employees ADD UNIQUE idx_employee_id (employee_id); ``` #### 3. 创建主键索引 主键索引是一种特殊的唯一索引,要求列值不能为空(NOT NULL),并且每个表只能有一个主键。 ```sql ALTER TABLE employees ADD PRIMARY KEY (employee_id); ``` #### 4. 创建全文索引 全文索引用于对文本类型的列进行全文搜索,适用于 `CHAR`、`VARCHAR` 和 `TEXT` 类型。 ```sql CREATE FULLTEXT INDEX ft_index ON table_name (text_column); ``` 或者使用 `ALTER TABLE` 添加全文索引: ```sql ALTER TABLE employees ADD FULLTEXT ft_index (first_name); ``` #### 5. 创建组合索引(多列索引) 组合索引是在多个列上创建的索引,可以加速涉及多个字段的查询。 ```sql CREATE INDEX idx_name ON table_name (column1, column2, column3); ``` 例如,为 `employees` 表的 `department_id` 和 `hire_date` 创建组合索引: ```sql CREATE INDEX idx_dept_hire ON employees (department_id, hire_date); ``` 也可以使用 `ALTER TABLE` 添加组合索引: ```sql ALTER TABLE employees ADD INDEX idx_dept_hire (department_id, hire_date); ``` --- ### 删除索引 索引可以使用 `DROP INDEX` 或 `ALTER TABLE` 删除: ```sql DROP INDEX index_name ON table_name; ``` 例如: ```sql DROP INDEX idx_lastname ON employees; ``` 也可以通过 `ALTER TABLE` 删除索引: ```sql ALTER TABLE employees DROP INDEX idx_lastname; ``` 删除主键索引时不需要指定索引名,因为每个表只有一个主键: ```sql ALTER TABLE employees DROP PRIMARY KEY; ``` --- ### 索引的使用建议 索引虽然能提升查询性能,但也会增加插入、更新和删除操作的开销,因为每次数据变更都需要维护索引结构。因此,在创建索引时应权衡查询与更新的需求,合理选择索引列。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值