【发布时间】:2026-01-21 21:55:01
【问题描述】:
如果有一个包含员工详细信息的表,其中包含一个 Gender 列,其值可以是 M/F。现在在此列上创建索引是否有意义,它会使搜索更快吗?从逻辑上讲,如果我们使用 where 子句包含 Gender 作为列的 select 语句,它应该将搜索时间减少一半。但是我听说这种索引没有帮助,并且在执行查询时实际上会被数据库优化器忽略。但我不明白为什么?有人可以解释一下吗?
【问题讨论】:
-
其实这个问题很笼统,但是尤其是Sybase
-
我在网上搜索但没有得到明确的答案,请给我投反对票的人解释一下,你为什么给我投反对票。可能对你来说这么简单,你能把答案也写出来吗
-
索引只是一个电话簿,如果名字不同,它有助于减少查找某人号码的时间,如果其中一半的名字是约翰,那么你需要搜索一半的房子。我没有给你投反对票。social.msdn.microsoft.com/forums/sqlserver/en-US/…
-
那么你确定如果我创建索引,它会减少一半的搜索吗?实际上它并不那么简单,因为它取决于数据库如何存储索引以及查询优化器如何工作,我听说它可能没有帮助,这就是我想要深入了解的原因
-
这取决于很多事情:行数、comp 上的内存、基数、索引类型、WHERE 中使用的列等等。对于 WHERE 中的单个列,它将返回一半我怀疑会使用索引的值。
标签: mysql sql database indexing sybase