通过减小索引大小来提高 MySQL 性能?

标签 mysql indexing

我有一个表,其中有大约 120 万行。它有 6 列索引,包括一个包含 url 的 varchar(255) 字段。

我需要能够扫描表以查看表中是否存在 url,从而查看索引,但我想知道通过将索引大小减少到 50 左右是否会提高性能?

当然,这意味着它在数据库中搜索 url 时可能必须扫描更多行。但我只需要每 30 秒执行一次此查询,所以我想知道较小的索引大小是否会是值得的。想法?

最佳答案

降低可能更好的两个原因 - (假设您的索引有用)

1) 索引也会加载到内存中,因此您的索引大小增长到无法完全缓存在内存中的程度的可能性很小。那时您会看到性能下降(所有新的硬件规范……120 万行几乎不可能,但仍然值得注意)。

2) 很多时候,仅前“n”个字符就足以快速识别每条记录。您可能根本不需要为整个 255 个字符编制索引。

您可能不关心的两个原因 -

1) 如前所述,您可能永远不会看到您的索引增长到超过您的 key 缓冲区,所以为什么要担心。

2) 您将需要确定前“n”个字符,即使在这之后性能将小于或等于完整索引……再也不会了。你真的需要花时间在这上面吗?可能失去准确性是否值得?

关于通过减小索引大小来提高 MySQL 性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5333468/

相关文章:

Java BoneCP MySQL 连接超时

indexing - Lucene 计数 - 按查询分组

php - CodeIgniter:无法使用提供的设置连接到数据库服务器错误消息

php - mysql中第四列数据没有保存cookies?

MySQL 删除字符串以及该字符串后面的所有内容

indexing - OrientDB 中的二级索引

mysql - 使用 GUID/UUID 键优化 Innodb 表索引

Mysql subselect 非常慢(似乎没有使用索引)

mysql 基于多个条件的索引/排序数据

mysql - 如何优化包含 "in"操作数的mysql查询?