当前位置: 首页 > 面试题库 >

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

厉念
2023-03-14
问题内容

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

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

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

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


问题答案:

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



 类似资料:
  • 问题内容: 考虑我有如下代码: 假设经常调用。那么建议缓存如下: 就我对java方法引用的理解而言,使用方法引用时,虚拟机会创建一个匿名类的对象。因此,缓存引用只会创建一次该对象,而第一种方法是在每个函数调用上创建该对象。它是否正确? 是应该缓存出现在代码中热门位置的方法引用,还是VM能够对其进行优化并使多余的缓存?是否有一般的最佳实践,或者这种高度VM实现是否特定于这种缓存是否有用? Java

  • 问题内容: 首先,我已经看过很多类似的问题,但是所有这些问题都与字段类型有关,而没有索引。至少那是我的理解。 众所周知,DateTime具有某些优势。把它们放在一边了一分钟,并假设表的引擎是用,它查询将更快地执行时标准基于: 带索引的DateTime 带索引的int 换句话说,最好将日期和时间存储为?或UNIX时间戳。请记住,不需要使用任何内置的MySQL函数。 更新资料 使用MySQL 5.1.

  • 问题内容: 您需要显式创建索引,还是在定义主键时隐式创建索引?MyISAM和InnoDB的答案是否相同? 问题答案: 主键始终被索引。对于MyISAM和InnoDB,这是相同的,并且通常对所有支持索引的存储引擎都是如此。

  • 问题内容: 例如,这是个好主意吗? 如果您在同一台服务器上有两个虚拟主机,一个虚拟主机,一个虚拟主机,并且使用不同的Apache DocumentRoots,则这将避免当include的来源未知并且可以在任何目录中时,不必包含绝对路径。 (注意:以下部分中的文件路径是相对于Web根目录的。实际上,它们类似于,其中Web根目录在哪里) 例如:我有一个/core/init.php,它是使用来自网站(,

  • 问题内容: 如何在DATETIME字段的日期部分创建索引? TranDateTime用于保存交易发生的日期和时间 我的表中有超过1,000,000条记录,并且该语句 花费很长时间。 编辑: 看看上“这个博客帖子为什么可以和应该避免MySQL的DATETIME ” 问题答案: 如果我没记错的话,这将运行整个表扫描,因为您正在通过函数传递列。MySQL将乖乖地为每一列运行该函数,而绕过索引,因为查询优

  • 问题内容: 我面临以下问题,我不确定什么是最佳实践。 考虑下表(该表会变大): id PK | Giver_id FK | FK | 日期 我正在使用InnoDB,据我了解,它会自动为两个外键列创建索引。但是,我还将在需要匹配以下特定组合的情况下进行大量查询: 。 每个这样的组合在表中将是唯一的。 在这些列上添加双列索引有什么好处,还是理论上两个单独的索引足够/相同? 问题答案: 如果您有两个单列