【发布时间】:2021-04-08 18:13:12
【问题描述】:
我有一个包含 100 亿行的表,我的搜索查询提取了 150 万行已编入索引的行。我的问题是如果我删除不必要的行并减少到 3 百万行,我想我的搜索条件性能会提高。这是我的问题
- 如果我使用 100 亿行与 300 万行查询相同数量的数据,索引如何工作
这是我的表详细信息和简单的搜索查询。 @startdate 是一个输入,它总是一个月
CREATE TABLE `ABCD` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`VAL` varchar(255) DEFAULT NULL,
`NVAL` varchar(255) DEFAULT NULL,
`DOC` bigint(20) NOT NULL,
`DESC` int(11) NOT NULL,
`DateCreat` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`ID`),
KEY `IDX_DOC` (`DOC`), -- BTREE NON-UNIQUE
KEY `INDEX_DESC` (`DESC`), -- BTREE NON-UNIQUE
KEY `INDEX_DateCreat` (`DateCreat`) -- BTREE NON-UNIQUE
) ENGINE=InnoDB AUTO_INCREMENT=14755842749 DEFAULT CHARSET=utf8
SELECT
MONTH(@START_DATE) 'Month'
,count(distinct DOC) 'Docs'
FROM
ABCD USE INDEX (IDX_DOC, INDEX_DateCreat)
WHERE
DateCreat >= @START_DATE and DateCreat < @END_DATE
【问题讨论】:
标签: mysql indexing datatables query-optimization