我有一个表,其中有大约 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/