gpt4 book ai didi

MySQL:如何加速查询获取大量数据并使用 LIKE

转载 作者:行者123 更新时间:2023-11-29 05:03:03 27 4
gpt4 key购买 nike

我有一个包含 3,666,058 条记录和 6 列的表,定义如下:

CREATE TABLE IF NOT EXISTS `annoyance` (
`a` varchar(50) NOT NULL default '',
`b` varchar(50) NOT NULL default '',
`c` longtext,
`d` varchar(21) NOT NULL,
`e` float default NULL,
`f` smallint(6) NOT NULL default '0',
KEY `ab` (`a`,`b`),
KEY `b` (`b`),
KEY `d` (`d`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我正在尝试获取 abd 列的内容,当 a某个前缀(3个字母长),让它成为aaa。所以我正在运行以下查询:SELECT a,b,c from annoyance where a like 'aaa%';。这应该从表中获取大约 1,835,000 条记录。

我的问题是:这个查询非常慢(当然是在没有缓存的情况下),有时需要几分钟。

那么,我怎样才能使这个特定查询的速度更快呢?我试过但没有成功的方法是在 a 上创建索引(大小为 3 或没有指定大小):MySQL 甚至不会费心使用索引,除非我用 FORCE INDEX 强制它 (索引提示),它似乎并没有加速查询执行。

最佳答案

从 360 万行中提取 180 万行基本上需要扫描整个表。要提高性能,您无能为力。

索引无济于事。如果您要从表中获取,比如说 1000 行,那么索引可以提供帮助。并且,a 上的索引将用于like。您也可以将其表述为:

where a >= 'aaa' and a < 'aab'

如果你想让优化器更容易选择索引。

关于MySQL:如何加速查询获取大量数据并使用 LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54184614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com