索引是数据库中用来提升性能最常用的工具。MySQL 5.0支持索引类型,而索引一般更多的使用在数据库优化上。首先所有的MYSQL列类型都可以被索引,对相关的列使用索引是提高SELECT操作性能最佳途径。目前存储索引表默认创建的都是BTREE索引,目前不支持函数索引。目前MYSQL对全文索引做的并不是太好,只支持几种类型(CHAR,VARCHAR,TEXT)。
为user表创建一个10个字节的前缀索引:
如:
删除索引语法:
如:
[quote]如果不使用索引,那么在MYSQL中必须从第1条记录开始然后读完整个表直到找出相关的行。这样一来,当表越大,表里的字段越多时,花费的时间就越多,如果表中的列有一个索引,那么MYSQL直接去索引中查找,没有必要查看所有的数据。
当然,在设计索引时也必须注意一些地方,设计索引有一定的原则。这样可以使得索引更快,更高效。
1,一般来说,索引列是经常被WHERE的列。
2,使用唯一索引。一般来说,如果对性别进行索引,因为性别一般只有2个,男与女,所以对性别做索引不会起到非常好的效果。
3,索引要更短。如果一个CHAR(100),最好对其前10到20个字符内进行索引。
4,不要过度索引,一般在性能比较低下的地方进行索引。而且索引太多,不容易优化。
[/quote]
为user表创建一个10个字节的前缀索引:
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING INDEX_TYPE] ON table_name(index_col_name,...)
index_col_name:col_name[(length) [ASC|DESC]]
如:
CREATE INDEX userName ON user (user(10));
删除索引语法:
DROP index_name ON table_name;
如:
DROP INDEX userName ON user;
[quote]如果不使用索引,那么在MYSQL中必须从第1条记录开始然后读完整个表直到找出相关的行。这样一来,当表越大,表里的字段越多时,花费的时间就越多,如果表中的列有一个索引,那么MYSQL直接去索引中查找,没有必要查看所有的数据。
当然,在设计索引时也必须注意一些地方,设计索引有一定的原则。这样可以使得索引更快,更高效。
1,一般来说,索引列是经常被WHERE的列。
2,使用唯一索引。一般来说,如果对性别进行索引,因为性别一般只有2个,男与女,所以对性别做索引不会起到非常好的效果。
3,索引要更短。如果一个CHAR(100),最好对其前10到20个字符内进行索引。
4,不要过度索引,一般在性能比较低下的地方进行索引。而且索引太多,不容易优化。
[/quote]