索引学习
-
建立索引
建立索引出现mysql> ALTER TABLE 425dongaonews ADD INDEX CONTENT_INDEX(content);
ERROR 1170 (42000): BLOB/TEXT column ‘content’ used in key specification without a key length的问题解决:在表对应text类型列建立索引的时候,要确定该列的长度,具体怎么确定我不知道
mysql> ALTER TABLE 425dongaonews ADD INDEX CONTENT_INDEX(content); ERROR 1170 (42000): BLOB/TEXT column 'content' used in key specification without a key length
mysql> CREATE INDEX content_index ON 425dongaonews(content(255)); Query OK, 0 rows affected (1.61 sec) Records: 0 Duplicates: 0 Warnings: 0
-
删除索引
mysql> drop index content_index on 425dongaonews; Query OK, 0 rows affected (0.03 sec) Records: 0 Duplicates: 0 Warnings: 0
-
对比一下时间
#有索引 mysql> select count(*) from 425dongaonews where content like '%羽生结弦%'; +----------+ | count(*) | +----------+ | 184 | +----------+ 1 row in set (0.99 sec)
mysql> select count(*) from 425dongaonews where content like '%羽生结弦%'; +----------+ | count(*) | +----------+ | 184 | +----------+ 1 row in set (0.97 sec)
感觉删完更快了
-
查询表中的索引信息
mysql> show index from 425dongaonews; +---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | 425dongaonews | 0 | PRIMARY | 1 | 序号 | A | 7848 | NULL | NULL | | BTREE | | | +---------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 1 row in set (0.00 sec)
-
建立索引的原则
-
定义主键的数据列一定要建立索引。
-
定义有外键的数据列一定要建立索引。
-
对于经常查询的数据列最好建立索引。
-
对于需要在指定范围内的快速或频繁查询的数据列;
-
***经常用在***WHERE****子句中的数据列。
-
经常出现在关键字order by、group by、distinct后面的字段,建立索引。
如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。
-
对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。
-
对于定义为text、image和bit的数据类型的列不要建立索引。
-
对于经常存取的列避免建立索
-
限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。
索引虽说提高了访问速度,但太多索引会影响数据的更新操作。
- 对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。
对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。
因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用,因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。
-