我有一个包含近 2300 万条记录的 MySQL 数据库表。这个表没有主键,因为没有什么是唯一的。它有 2 列,均已编入索引。下面是它的结构:

下面是它的一些数据:

现在,我运行了一个简单的查询:
SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001'
Run Code Online (Sandbox Code Playgroud)
不幸的是,这花了超过 5 秒的时间来检索数据并将它们显示给我。我未来的表将有1500亿条记录,所以这个时间非常非常高。
我运行Explain命令看看发生了什么。结果如下。

然后我使用以下命令运行配置文件。
SET profiling=1;
SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001';
SHOW profile;
Run Code Online (Sandbox Code Playgroud)
下面是分析的结果:

以下是有关我的表的更多信息:

那么,为什么这需要这么长时间?他们也被索引了!将来,我必须运行很多LIKE命令,所以这花费了太多时间。出了什么问题?