一个特定的表我有一个整数“请将isDeleted”字段缺省值为0
基本上此字段标志作为开始删除或不连续。现在,在查询时,我将根据是否设置此标志指定获取记录。我应该使用索引在这些类型的属性的
设置此属性的索引值得吗?
一个特定的表我有一个整数“请将isDeleted”字段缺省值为0
基本上此字段标志作为开始删除或不连续。现在,在查询时,我将根据是否设置此标志指定获取记录。我应该使用索引在这些类型的属性的
设置此属性的索引值得吗?
如果删除的记录比现场(或反之亦然)多得多,那么查询最少使用的类型将受益于索引。
说,如果记录1%
被删除,您要查询
SELECT *
FROM records
WHERE isDeleted = 1
,优化器会选择索引,而该查询:
SELECT *
FROM records
WHERE isDeleted = 0
将使用全表扫描。
如果没有删除的未保留记录的数量低于临界点(这取决于记录大小和其他事项,但作为经验法则可以被认为是10%
),那么索引可能永远不会被使用。
如果你正在使用MySQL,你应该使用BIT datatype这种操作有关布尔检查,而不是整数。 (见http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html)。
True and False分别对应于1和0。
对于那些您指定值为1的查询,列上的索引可能值得,对于0,不。细节here
良好的指数通常必须非常**选择性**,例如,在给定的一组数据中,提取2-5%的数据行。如果你的'IsDeleted'标志符合那个标准 - 那么是的,你可以索引它并看到好处。如果你有20%,30%,50%的删除行,那么很可能索引编制根本没有任何帮助...... – 2011-04-22 11:26:52