MySQL 索引篇
索引可以大大提高MySQL的检索速度
索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。
创建索引,确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。
索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。
缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
方式创建普通索引
CREATE INDEX indexName ONmytable(username(length));
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 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;
转载请注明:IT运维空间 » Mysql » mysql快速学习索引篇(十二)
发表评论