mysql - 如何为 MySQL 表建立索引,99% 的时间我需要查询 1% 的数据

标签 mysql indexing performance

嗨,我有一个 MySQL 表,假设它是一个帮助台票务系统。它有一个 CLOSED 列,我想为其建立索引。 99% 的时间,我只需要选择 OPEN 门票,所以类似

"SELECT * FROM TICKET_TABLE where CLOSED='N'; "

随着时间的推移,越来越多的工单被关闭,而仍然有少量固定数量的开放工单。 OPEN/CLOSED 比率约为 1/99。

我有一个索引

ALTER TABLE TICKET_TABLE ADD INDEX ( CLOSED );

但是这个索引没有被选择(我有很多其他索引,当我执行 EXPLAIN 时会选择它们)。当我查询时我可以理解这个 CLOSED 索引不好

"SELECT * FROM TICKET_TABLE where CLOSED='Y'; "

但是当我查询时它是完美的

"SELECT * FROM TICKET_TABLE where CLOSED='N'; "

我应该如何索引我的表?

最佳答案

一种选择是归档所有已关闭一段时间的旧票证,以减少行数。当您需要搜索所有工单时,您可以非常轻松地连接两个表。

关于mysql - 如何为 MySQL 表建立索引,99% 的时间我需要查询 1% 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2338261/

相关文章:

mysql - 计算 MySQL 数据库中多个属性中字符串出现的次数如何

mysql - AWS RDS 是否支持与本地 MySQL 数据库的双向复制?

java - 我在尝试获取索引处的字符时遇到问题

python - 双索引 python pandas

.net - .net有不同的运行模式吗?

mysql - 从表 B 中选择具有表 A 中的多个条件的条目

mysql - 多重连接 - Mysql

sql - 索引只影响 WHERE 子句?

php - 在 MySQL 中计算特定日期之间数百万行的最佳方法

android - 在Android应用中关闭适配器后停止音频播放器