mysql查看以及建立索引

29 篇文章 1 订阅

现在mysql中有一张表journal_update_logs,数据量比较大,有3000多万条数据,现在查询比较慢,需要建立索引。
第一步,查看该表的索引:
SHOW INDEX FROM journal_update_logs;
在这里插入图片描述
每张表都会有原始的主键索引PRIMARY,下面的索引是我后面加的,date_range_index是日期的范围索引,如果需要查询某个时间段内的记录,并且字段是日期类型,建立一个日期范围查询的索引会比较好。对于日期类型的字段,通常建议使用 B-Tree 索引,因为 B-Tree 索引适合范围查询,能够快速定位到指定范围内的记录。
举个例子,假设你有一个表 your_table,其中包含一个日期类型的字段 date_column,你想要查询某个时间段内的记录,可以创建如下索引:
CREATE INDEX date_range_index ON your_table (date_column);

后面两个为复合索引,一条sql中需要查询article_title以及pub_date,可以为他们创建复合索引:
创建方式:
CREATE INDEX idx_article_title_pub_date ON journal_update_logs (article_title, pub_date);

需要注意的是::MySQL 不允许在包含 BLOB、TEXT 或者 VARCHAR 列上创建索引时使用索引长度限制。因此,如果 article_title 列是 BLOB、TEXT 或者 VARCHAR 类型,那么不能直接为该列创建一个复合索引。不然会报错:BLOB/TEXT column ‘article_title’ used in key specification without a key length

解决此问题的一种方法是在创建索引时为 BLOB、TEXT 或者 VARCHAR 类型的列指定一个前缀长度。这样,就可以为这些列创建一个索引。下面是一个示例,演示了如何为 BLOB、TEXT 或者 VARCHAR 类型的列创建一个带有前缀长度的索引:
CREATE INDEX idx_article_title_pub_date ON journal_update_logs (article_title(255), pub_date);

**第二步:**创建索引

现在通过createtime查询:这个字段没有索引:查询花费27秒:
在这里插入图片描述
为该字段创建索引:
在这里插入图片描述
再次运行,可以看到2.5秒就完成了查询,几乎提升了10倍的速度
在这里插入图片描述

以下是索引的一些类型:
1、唯一索引:这将为指定字段创建一个唯一索引,确保该字段中的值在整个表中是唯一的。

CREATE UNIQUE INDEX index_name ON your_table_name (your_column_name);

2、全文索引:这将为指定字段创建一个全文索引,用于支持全文搜索功能。

CREATE FULLTEXT INDEX index_name ON your_table_name (your_column_name);

3、复合索引:这将为多个字段创建一个复合索引,以支持多列查询。

CREATE INDEX index_name ON your_table_name (column1, column2);

4、空间索引:这将为指定的空间数据字段创建一个空间索引,用于支持地理空间数据查询。

CREATE SPATIAL INDEX index_name ON your_table_name (your_column_name);

5、组合索引:这将为多个字段创建一个组合索引,并指定索引类型为 B-树(BTREE)。

CREATE INDEX index_name ON your_table_name (column1, column2) USING BTREE;

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值