一尘不染

在mysql中索引datetime字段是一个好主意吗?

mysql

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

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

我正在努力保持数据库正常运行,并且查询运行平稳

此外,您认为创建高效数据库应该有什么主意?


阅读 1036

收藏
2020-05-17

共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子句中使用的列)。

2020-05-17