Mysql中的索引

索引学习

  1. 建立索引
    建立索引出现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
    
  2. 删除索引

    mysql> drop index content_index on 425dongaonews;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
  3. 对比一下时间

    #有索引
    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)
    

    感觉删完更快了

  4. 查询表中的索引信息

    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)
    
  5. 建立索引的原则

    1. 定义主键的数据列一定要建立索引。

    2. 定义有外键的数据列一定要建立索引。

    3. 对于经常查询的数据列最好建立索引。

    4. 对于需要在指定范围内的快速或频繁查询的数据列;

    5. ***经常用在***WHERE****子句中的数据列。

    6. 经常出现在关键字order by、group by、distinct后面的字段,建立索引。

    如果建立的是复合索引,索引的字段顺序要和这些关键字后面的字段顺序一致,否则索引不会被使用。

    1. 对于那些查询中很少涉及的列,重复值比较多的列不要建立索引。

    2. 对于定义为text、image和bit的数据类型的列不要建立索引。

    3. 对于经常存取的列避免建立索

    4. 限制表上的索引数目。对一个存在大量更新操作的表,所建索引的数目一般不要超过3个,最多不要超过5个。

    索引虽说提高了访问速度,但太多索引会影响数据的更新操作。

    1. 对复合索引,按照字段在查询条件中出现的频度建立索引。在复合索引中,记录首先按照第一个字段排序。

    对于在第一个字段上取值相同的记录,系统再按照第二个字段的取值排序,以此类推。

    因此只有复合索引的第一个字段出现在查询条件中,该索引才可能被使用,因此将应用频度高的字段,放置在复合索引的前面,会使系统最大可能地使用此索引,发挥索引的作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值