Mysql入门——-index
【索引的含义和特点】
索引是一个单独的、存储在磁盘上的数据库结构,包含对数据库表中所有记录的引用指针。
索引是在存储引擎上实现的,每种存储引擎的索引都不一定完全相同。所有存储引擎支持每个表至少16个索引,总长度至少为256个字节。MySQL中索引的存储类型有两种,BTREE和HASH,其中MyISAM和InnoDB仅只支持BTREE索引,MEMERY/HEAP支持BTREE和HASH索引。
索引的主要优点;
1.唯一索引保证每条记录的唯一性
2.提高查询速度
3.实现数据的参考完整性上,加速表与表之间的连接
4.使用分组和排序子句进行数据查询时,可以减少查询时间
缺点:
1.创建和维护耗时,
2.索引占据磁盘空间
3.对数据表的数据进行更新的时候,索引页需要动态维护
索引的分类;
1.普通索引和唯一索引
普通索引定义索引得列可以插入重复值or空值,唯一索引No
2.单索引和组合索引
3.全文索引
全文索引可以在CHAR、VARCHAR、或者TEXT类型列上创建。MYSQL中只有MyISAM存储引擎支持全文索引
4.空间索引
MySQL中空间索引4种:GEOMETRY、POINT、LINESTRING、POLYGON。MySQL使用SPATIAL关键字进行扩展;
创建空间索引的列,必须将其声明为NOT NULL,空间索引只能在存储引擎为MyISAM的表中创建
索引设计简单原则:
1.非越多越好,(1)占用磁盘空间(2)影响insert、delete、update 语句的执行性能,因为数据的更新也需要更新索引
2.经常更新的表避免过多的索引,且索引列尽量少
3.数据量小的表最好不使用索引
4.在条件表达式中经常用到的不同值较多的列上建立索引,反之亦凡;
5.当唯一性是某种数据本身的特征时,建立唯一索引
6.频繁排序分组的列上建立索引,多个则组合索引
【创建索引】
1.创建表的时候
CREATE TABLE table_name [col_name data_type]
[UNIQUE | FULLTEXT|SPATIAL][INDEX|KEY][index_name](col_name[length])[ASC|DESC]
UNIQUE | FULLTEXT|SPATIAL 为可选参数;
index_name 可选参数,若不指定则默认为col_name
length 可选参数,仅字符串类型的字段可指定索引长度
---------------------------------------------------------------------------------------------------------------------
O(∩_∩)O哈哈~,本人小白,纯学习笔记~~~望有心人加以指点迷津。。。。
Thanks!