Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别

Mysql各种索引区别:
普通索引:最基本的索引,没有任何限制
唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
主键索引:它 是一种特殊的唯一索引,不允许有空值。 
全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。

Mysql索引概念:
说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要占纸张的,而索引是要占磁盘空间的。

Mysql索引主要有两种结构:B+树和hash.

hash:hsah索引在mysql比较少用,他以把数据的索引以hash形式组织起来,因此当查找某一条记录的时候,速度非常快.当时因为是hash结构,每个键只对应一个值,而且是散列的方式分布.所以他并不支持范围查找和排序等功能.
B+树:b+tree是mysql使用最频繁的一个索引数据结构,数据结构以平衡树的形式来组织,因为是树型结构,所以更适合用来处理排序,范围查找等功能.相对hash索引,B+树在查找单条记录的速度虽然比不上hash索引,但是因为更适合排序等操作,所以他更受用户的欢迎.毕竟不可能只对数据库进行单条记录的操作.

Mysql常见索引有:主键索引、唯一索引、普通索引、全文索引、组合索引

PRIMARY KEY(主键索引)  ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )

UNIQUE(唯一索引)     ALTER TABLE `table_name` ADD UNIQUE (`column`)
INDEX(普通索引)     ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) FULLTEXT

(全文索引)      ALTER TABLE `table_name` ADD FULLTEXT ( `column` )

组合索引   ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

时间: 2024-10-21 23:02:15

Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别的相关文章

MySQL的几个概念:主键,外键,索引,唯一索引

概念: 主键(primary key) 能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引. 外键(foreign key) 是用于建立和加强两个表数据之间的链接的一列或多列.外键约束主要用来维护两个表之间数据的一致性.简言之,表的外键就是另一表的主键,外键将两表联系起来.一般情况下,要删除一张表中的主键必须首

mysql 主键和唯一索引的区别

主键是一种约束,唯一索引是一种索引,两者在本质上是不同的. 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键. 唯一性索引列允许空值,而主键列不允许为空值. 主键列在创建时,已经默认为非空值 + 唯一索引了. 主键可以被其他表引用为外键,而唯一索引不能. 一个表最多只能创建一个主键,但可以创建多个唯一索引. 主键和唯一索引都可以有多列. 主键更适合那些不容易更改的唯一标识,如自动递增列.身份证号等. 在 RBO 模式下,主键的执行计划优先级要高于唯一索引. 两者可以提高查询的速度.

百万数据修改索引,百万数据修改主键

原文:百万数据修改索引,百万数据修改主键 当百万数据时,如果修改主键,那么会自动重建索引,所以操作会非常慢,经常会超时,错误提示类似: 超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决方案:不要采用手动添加主键或者索引,而采用sql语句修改主键或者索引,当然很多人这个sql不会写,也不要紧,sql自带了,两步走,第一:点开表设计,添加一个索引或者主键,如图 第二:关闭后,右键,有一个生成更改脚本,如图: 点击生成,复制里面的脚本,关闭当前页面,记住,不要保存哦....然后运行这个sq

MySQL数据库使某个不是主键的字段唯一

在使用MySQL数据的过程中有时候我们需要某个不是主键的字段不重复,这个时候就要用到SQL的UNIQUE约束了. 下面摘抄自w3school里的一段介绍: UNIQUE 约束唯一标识数据库表中的每条记录. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. PRIMARY KEY 拥有自动定义的 UNIQUE 约束. 请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束. 下面在 "Persons" 表创建时在

mysql数据库表的自增主键号不规律,重新排列

mysql数据库表的自增主键ID乱了,需要重新排序. 原理:删除原有的自增ID,重新建立新的自增ID. 1.删除原有主键: ALTER TABLE `table_name` DROP `id`; 2.添加新主键字段: ALTER TABLE `table_name` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST; 3.设置新主键: ALTER TABLE `table_name` MODIFY COLUMN `id` MEDIUMINT( 8 ) NOT NULL

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id values(null)        <selectKey resultClass="int">SELECT @@IDENTITY As id</selectKey>    </insert>

mysql主从介绍,准备工作,主配置,从配置,主从测试

主从介绍 MySQL主从又叫做Replication.AB复制.简单讲就是A和B两台机器做主从后,在A上写数据,另外一台B也会跟着写数据,两者数据实时同步. MySQL主从是基于binlog的,主上须开启binlog才能进行主从. 主从过程三个步骤 主将更改操作记录到binlog中 从将主的binlog事件(SQL语句)同步到本机并记录在relaylog中 从根据relaylog里面的SQL语句按顺序执行 该过程有三个线程,主上有一个logdump线程,用来和从的i/o线程传递binlog:从上

14-SQLite之主键与唯一约束

一.主键 惟一地标识一行(一张表中只能有一个主键) 主键应当是对用户没有意义的(常用于索引) 永远不要更新主键,否则违反对用户没有意义原则 主键不应包含动态变化的数据,如时间戳.创建时间列.修改时间列等 在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录 语法: create table 表名称 (列名称1 数据类型 primary key, 列名称2 数据 类型,列名称3 数据类型, ...); 二.唯一约束 用来保证一个列(或一组列)中数据唯一,类似于主键,但跟主键有区别

面试|简单描述MySQL中,索引,主键,唯一索引,联合索引 的区别,对数据库的性能有什么影响(从读写两方面)

索引是一种特殊的文件(InnoDB 数据表上的索引是表空间的一个组成部分),它们 包含着对数据表里所有记录的引用指针. 普通索引(由关键字 KEY 或 INDEX 定义的索引)的唯一任务是加快对数据的访问速度. 普通索引允许被索引的数据列包含重复的值.如果能确定某个数据列将只包含彼 此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它 定义为一个唯一索引. 也就是说,唯一索引可以保证数据记录的唯一性. 主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于