【发布时间】:2010-09-12 16:12:01
【问题描述】:
如果我有类似的查询,
DELETE FROM table WHERE datetime_field < '2008-01-01 00:00:00'
有datetime_field 列索引有帮助吗?即索引仅在使用相等(或不等)测试时有用,还是在进行有序比较时也有用?
(建议更好地执行此查询,无需重新创建表,也可以!)
【问题讨论】:
标签: mysql optimization indexing
如果我有类似的查询,
DELETE FROM table WHERE datetime_field < '2008-01-01 00:00:00'
有datetime_field 列索引有帮助吗?即索引仅在使用相等(或不等)测试时有用,还是在进行有序比较时也有用?
(建议更好地执行此查询,无需重新创建表,也可以!)
【问题讨论】:
标签: mysql optimization indexing
也许吧。一般来说,如果有这样的索引,如果查询上没有“更好”的索引,它将对该索引使用范围扫描。但是,如果优化器决定范围最终会太大(即包含超过 1/3 的行),它可能根本不会使用索引,因为表扫描可能会更快。
使用 EXPLAIN(在 SELECT 上;您不能 EXPLAIN 删除)来确定它在特定情况下的决定。这可能取决于
【讨论】:
B 树索引可用于使用 =、>、>=、
对于大量行,通过树索引查找行比通过表扫描查找行要快得多。但正如其他答案所指出的,请使用EXPLAIN 找出 MySQL 的决定。
【讨论】:
日期时间字段上的索引肯定有助于基于日期范围的搜索。我们一直在数据库中使用它们,如果没有索引,查询速度非常慢。
【讨论】:
确实如此,请使用 DESCRIBE SELECT FROM 表检查...
【讨论】:
除非你在mysql中没有这个bughttp://bugs.mysql.com/bug.php?id=58190
【讨论】: