king

mysql快速学习索引篇(十二)

king Mysql 2018-05-21 2260浏览 0

MySQL 索引篇


索引可以大大提高MySQL的检索速度
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
创建索引,确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)
索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERTUPDATEDELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
方式创建普通索引

CREATE INDEX indexName ONmytable(username(length));

如果是CHARVARCHAR类型,length可以小于字段实际长度;如果是BLOBTEXT类型,必须指定 length

修改表结构

ALTER mytable ADD INDEX[indexName] ON (username(length))

创建表的时候直接指定


1

2

3

4

5

CREATE TABLE mytable(

ID INT NOT NULL,

username VARCHAR(16) NOTNULL,

INDEX [indexName](username(length))

);

删除索引的语法

DROP INDEX [indexName] ONmytable;

唯一索引:前面加UNIQUE

使用ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARYKEY (column_list):该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL
ALTER TABLE tbl_name ADD UNIQUEindex_name (column_list):
这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
ALTER TABLE tbl_name ADD INDEXindex_name (column_list):
添加普通索引,索引值可出现多次。
ALTER TABLE tbl_name ADD FULLTEXTindex_name (column_list):
该语句指定了索引为 FULLTEXT ,用于全文索引。

使用 ALTER 命令添加和删除主键

主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:

mysql> ALTER TABLEtestalter_tbl MODIFY i INT NOT NULL;

mysql> ALTER TABLEtestalter_tbl ADD PRIMARY KEY (i);

你也可以使用 ALTER 命令删除主键:

mysql> ALTER TABLEtestalter_tbl DROP PRIMARY KEY;

SHOW INDEX 命令列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

mysql> SHOW INDEX FROMtable_name\G

MySQL 临时表

临时表只在当前连接可见,当关闭连接时,MySQL会自动删除表并释放所有空间。

mysql> CREATE TEMPORARY TABLE SalesSummary

mysql> DROP TABLE SalesSummary;

MySQL 复制表

创建新的克隆表clone_tbl。如果你想拷贝数据表的数据你可以使用 INSERT INTO... SELECT 语句来实现。

mysql> INSERT INTOclone_tbl (w3cschool_id,
-> w3cschool_title,
-> w3cschool_author,
-> submission_date)
-> SELECT w3cschool_id,w3cschool_title,
-> w3cschool_author,submission_date
->FROM w3cschool_tbl;


继续浏览有关 mysql 的文章
发表评论