小编mpe*_*rin的帖子

MySQL/MariaDB 上的简单键值存储是否需要键索引?

我正在与另一位开发人员就简单键/值表上的 SELECT 查询的性能进行交流。

CREATE TABLE cache (
            id BIGINT unsigned not null auto_increment,
            name VARCHAR(32),
            uri VARCHAR(255),
            value LONGTEXT,
            expire DATETIME,
            PRIMARY KEY (id)
        ) DEFAULT CHARSET=utf8";
Run Code Online (Sandbox Code Playgroud)

默认情况下,该表没有索引,一旦缓存增大,我就会遇到简单 SELECT 查询的性能非常差的情况:

SELECT value
FROM cache
WHERE name = '$cache_name' AND expire >= '$now'
LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

我在名称上添加了索引,它解决了我的性能问题。

然而,原始代码的作者告诉我,名称字段中存储的数据基数非常低,因为没有重复值(我们存储哈希值),因此不需要索引,更糟糕的是,它可能会导致性能问题。

是真的吗?为什么我的经历恰恰相反?MySQL 和 MariaDB 的行为有可能不同吗?

mysql mariadb index

3
推荐指数
1
解决办法
209
查看次数

标签 统计

index ×1

mariadb ×1

mysql ×1