小编典典

在mysql中索引日期时间字段是个好主意吗?

all

我正在设计一个大型数据库。在我的应用程序中,我将有很多行,例如我目前有一个包含 400 万条记录的表。我的大多数查询都使用 datetime
子句来选择数据。在 mysql 数据库中索引日期时间字段是个好主意吗?

Select field1, field2,.....,field15
from table where field 20 between now() and now + 30 days

我正在努力让我的数据库运行良好并且查询运行顺利

更多,你认为我应该有什么想法来创建一个高效的数据库?


阅读 123

收藏
2022-08-16

共1个答案

小编典典

MySQL 出于多种原因建议使用索引,包括消除条件之间的行:http: //dev.mysql.com/doc/refman/5.0/en/mysql-
indexes.html

如果您要在查询中频繁使用它,这会使您的 datetime 列成为索引的绝佳候选者。如果您的唯一条件是BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 30 DAY)并且您在该条件中没有其他索引,那么 MySQL 将不得不对每个查询进行 全表扫描。
我不确定在 30 天内生成了多少行,但只要它小于总行数的 1/3 左右,在列上使用索引会更有效。

您关于创建高效数据库的问题非常广泛。我想说只是确保它被规范化并且所有适当的列都被索引(即在连接和 where 子句中使用的列)。

2022-08-16