Mysql 索引类型

本文详细介绍了数据库中的各种索引类型,包括普通索引、唯一索引、主键索引、组合索引、Hash索引、B-Tree索引、聚簇索引和全文索引。此外还探讨了在不同情况下索引的使用限制以及如何通过SQL指令干预索引来提高查询性能。

索引类型

1.普通索引
 create index index_name on t_user(name(12));
2.唯一索引:允许表中存在多条记录为空的记录
create unique index index_name on t_user(name(12));
3.主键索引:不允许有空值
create table t_user(id int not null,name varchar(12),primary key(id));
4.组合索引
alter table t_user add index name_city_age(name(6),city,age);

5.Hash索引

CREATE TABLE testhash (fname VARCHAR(50) NOT NULL,lname VARCHAR(50) NOT NULL,KEY USING HASH(fname))ENGINE=MEMORY;

6.B-Tree索引:
CREATE TABLE People (last_name varchar(50) not null,first_name varchar(50) not null,dob date not null,gender enum('m', 'f') not null,key(last_name, first_name, dob));


7.聚簇索引(Clustered Indexes):聚簇索引保证关键字的值相近的元组存储的物理位置也相同(所以字符串类型不宜建立聚簇索引,特别是随机字符串,会使得系统进行大量的移动操作),且一个表只能有一个聚簇索引。因为由存储引擎实现索引,所以,并不是所有的引擎都支持聚簇索引。目前,只有solidDB和InnoDB支持。

8.全文索引

ALTER  TABLE  index15  ADD  FULLTEXT  INDEX  index15_info ( info ) ;

 

用不上索引的情况
1.!= 和<>不等查询时,不会用索引
2.对字段使用函数时,不会用索引
3.join时条件字段类型不一致时无法使用索引
4. or 查询时,前后字段度必须有索引时才能用上索引

干预索引使用,提高性能:
1.提供给Mysql参考,推荐Mysql使用某个索引

select * from t_user use index(index_city)where name like 'a%' and city like 'b%';
2.强制Mysql使用某索引

select * from t_user force index(index_city)where name like 'a%' and city like 'b%';
3.让mysql 忽略使用某索引

select * from t_user ignore index(index_city)where name like 'a%' and city like 'b%';

转载于:https://www.cnblogs.com/datastack/p/3826624.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值