mysql 整理(六)索引,更新数据

更新数据

UPDATE tablename 

SET column1 = value1,column2 = value2 ,。。。。,columnN = valueN

where id = 1;

删除数据

DELETE FROM tablename  where id=3;

索引

什么是索引:

一种数据结构,提高数据库中特定数据的查询速度。

索引在存储引擎中实现,每种存储引擎的索引不一定相同,每种存储引擎不一定支持所有索引类型。

索引有:BTREE 和HASH 两种存储类型。

MyISAM 和InnoDB 存储引擎值支持BTREE索引,MEMORY/HEAP支持HASH 和BTREE。

索引优点:

创建唯一索引,保证数据唯一性。

大大加快数据查询速度。

加速表与表之间连接。

显著减少查询中分组和排序的时间。

不利:

创建索引耗费时间。

占磁盘空间。

数据增删改的时候索引要动态维护,降低维护速度。

索引设计原则:

一、并非越多越好,占空间影响增删改表数据的性能。

二、避免添加不必要字段。

三、数据量小的表不要用索引,查询时间比创建索引还短。

四、在不同的值很少的列上不要建立索引比如性别只有男和女,会严重降低数据更新速度。

五、当唯一性是某个数据列的特点,就建立唯一索引可以提高数据查询速度。

六、在频繁分组和排序的列上建立索引,如果待排序的列有多个就建立组合索引。

索引分类:

普通索引和唯一索引

普通索引是基本索引类型匀速插入重复和空值。

唯一索引必须唯一,允许空值,如果是组合索引列值必须唯一,主键索引是特殊唯一索引不允许空值。

单列索引和组合索引

单列索引就是只包含单个列,一个表可以有多个单列索引。

组合索引在标的多个字段组合上创建索引,只有在查询条件中使用这些字段的左边字段,索引才会被使用,组合索引遵守最左前缀

索引创建

普通索引

最基本的索引没有限制,只是加快数据访问速度

CREATE TABLE book

id     INT(11)  AUTO_INCREMENT,

date DATE NOT NULL,

INDEX(date)

);

使用explain 查询索引是否启用

explain  select *from  book   date = "19993366778899" \G

参数:

possible_keys代表可选用索引数

key行是mysql实际选用索引数

key_len行给树索引按字节计算的长度越小越快。

创建唯一索引

UNIQUE INDEX UniqIdx(id)

单列索引

INDEX SingleIdx(name(20))

名为SingleIdx单列索引索引长度为20

组合索引

INDEX MultiIdx(idname,age(1000))

遵守最左前缀,查询可以用 (id,name,age),(id,name)或者id不构成最左前缀就不会启动索引。

全文搜索:

FULLTEXT INDEX FullTxtIdx(info)

空间索引

SPATIAL INDEX spatIdx(g)

在已存在表创建索引

ALTER TABLE table_name ADD [UNIQUE|FULLTEXT|SPATIAL] [INDEX|KEY]  [index_name] (col_name[lenght],....) [ASC|DESC]

也可以使用CREATE INDEX 命令

SHOW INDEX FROM book  \G查看表的索引情况

参数

Non_unique 等于1 代表非唯一索引 0代表唯一索引

key_name代表索引名

Seq_in_index表示该字段在索引的位置 单列为1

Column_name 表示定义索引的列字段

Sub_part表示索引的长度。

NULL表示是否可以为空

Index_type 表示索引类型。

删除索引

ALTER TABLE table_name DROP INDEX  index_name;

猜你喜欢

转载自www.cnblogs.com/thotf/p/12602899.html
今日推荐