在 MySql 中的 Varchar 列上设置索引

Posted

技术标签:

【中文标题】在 MySql 中的 Varchar 列上设置索引【英文标题】:Setting index in MySql on a Varchar Column 【发布时间】:2014-07-27 16:26:14 【问题描述】:

mysql 中,我有一个 UNION 查询,它需要很长时间才能执行。 查询看起来像

(SELECT id, X, Y , date FROM TABLE WHERE date in (SELECT MIN(date) FROM TABLE WHERE flag = 0 AND id = ? AND date BETWEEN ? AND ?) and id = ? and flag=0 ORDER BY id DESC LIMIT 1)

UNION 

(SELECT id, X, Y , date FROM TABLE WHERE date in (SELECT MAX(date) FROM TABLE WHERE flag = 0 AND id = ? AND date BETWEEN ? AND ?) and id = ? and flag = 0 ORDER BY id DESC LIMIT 1)

问题是为了获得上述查询的最佳性能,需要索引哪些列以及为什么?

id - type int
date - type datetime
flag - type tinyint(4)

【问题讨论】:

【参考方案1】:

我索引了以下内容 1.身份证 2.日期 3. 标志

【讨论】:

以上是关于在 MySql 中的 Varchar 列上设置索引的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - InnoDB 索引 varchar 或索引多个 varchar

在部分 CHAR 列上创建索引

mysql失效的几种情况

varchar 列上的 MySQL first_value 返回格式错误的记录

如何在 MySQL 中的 json 列上创建索引?

MySQL索引机制(详细+原理+解析)