mysql索引的类型分几种?并做简要说明。
1. 普通索引
这是最基本的索引,值可以为空,它没有任何限制,仅加速查询
增加索引:
CREATE INDEX indexName ON tableName(columnName(length));
ALTER table tableName ADD INDEX indexName(columnName);
如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。
删除索引:DROP INDEX indexName ON tablename;
2. 唯一索引
索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
CREATE UNIQUE INDEX indexName ON tablename(columnName(length)) ;
ALTER table tablename ADD UNIQUE [indexName] (columnName(length));
3. 主键索引
主键是一种唯一性索引,但它必须指定为PRIMARY KEY,不可以有空值,每个表只能有一个主键。
ALTER table tablename add primary key (`columnName`)
4. 全文索引:
全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集,通过ALTER TABLE(或者CREATE INDEX)命令创建全文索引要比把记录插入带有全文索引的空表更快。MyISAM支持全文索引,InnoDB在mysql5.6之后支持了全文索引。 全文索引不支持中文需要借sphinx(coreseek)或迅搜技术处理中文。
alter table tablename add FULLTEXT(`columnName`);
索引优化: https://www.cnblogs.com/pcyy/p/7943759.html
SQL中什么情况下需要用到左连接(left join)?
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
网友评论