MySQL中INDEX、PRIMARY、UNIQUE、FULLTEXT的区别
MySQL中的索引是优化查询的一种技术。可以避免全表扫描而快速查找到数据。MySQL中常用的索引类型有四种 – INDEX、PRIMARY、UNIQUE和FULLTEXT,下面我们来逐一进行介绍。
阅读更多:MySQL 教程
INDEX
INDEX是最基本的索引类型,不做任何限制。当我们想在查询中查找数据时,如果没有使用任何索引,那么MySQL会进行全表扫描,这种查询方法非常费时。如果我们在表中加入一个简单的索引,那么查询时MySQL就会使用这个索引,快速地找到想要的数据。
例如,我们给一张students表增加一个名为score的INDEX索引:
CREATE INDEX idx_score ON students (score);
这样我们就可以快速的查到想要的数据,无需进行全表扫描。
PRIMARY
PRIMARY是指定一列作为主键,一个表中只能有一个主键。主键保证表中每一行数据的唯一性,并且快速地查找每一行的数据。常见的主键类型有自增ID、GUID或者Date、Time组成的复合主键等。例如,我们在students表中指定id列为主键:
ALTER TABLE students ADD PRIMARY KEY(id);
这样我们就可以通过id来快速地查找每个学生的信息。
UNIQUE
UNIQUE是指定某些列不允许重复值,和主键的概念类似。跟主键的区别在于,一个表中可以有多个UNIQUE索引。例如,我们在students表中指定email列为UNIQUE:
ALTER TABLE students ADD UNIQUE INDEX idx_email(email);
这样我们就保证了每个学生的邮箱地址是唯一的。
FULLTEXT
FULLTEXT索引是用于搜索文本数据的。它的查询方式与普通索引有所不同。FULLTEXT索引会对表中的每个单词进行索引,并且能够通过关键字进行快速搜索。例如,我们给一张articles表的title和content列增加FULLTEXT索引:
ALTER TABLE articles ADD FULLTEXT(title,content);
这样我们就可以用MATCH AGAINST语句快速地搜索到我们需要的文章:
SELECT * FROM articles WHERE MATCH(title, content) AGAINST('MySQL Differences' IN BOOLEAN MODE);
总结
MySQL中的索引是优化查询的一种技术,INDEX、PRIMARY、UNIQUE、FULLTEXT是常见的四种索引类型。使用和设计上述索引,可以使我们的MySQL查询更加快速高效。
极客笔记