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

如何在MySql的DATETIME字段的日期部分创建索引

上官华池
2023-03-14
问题内容

如何在DATETIME字段的日期部分创建索引?

mysql> SHOW COLUMNS FROM transactionlist;
+-------------------+------------------+------+-----+---------+----------------+
| Field             | Type             | Null | Key | Default | Extra          |
+-------------------+------------------+------+-----+---------+----------------+
| TransactionNumber | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| WagerId           | int(11)          | YES  | MUL | 0       |                |
| TranNum           | int(11)          | YES  | MUL | 0       |                |
| TranDateTime      | datetime         | NO   |     | NULL    |                |
| Amount            | double           | YES  |     | 0       |                |
| Action            | smallint(6)      | YES  |     | 0       |                |
| Uid               | int(11)          | YES  |     | 1       |                |
| AuthId            | int(11)          | YES  |     | 1       |                |
+-------------------+------------------+------+-----+---------+----------------+
8 rows in set (0.00 sec)

TranDateTime用于保存交易发生的日期和时间

我的表中有超过1,000,000条记录,并且该语句

SELECT * FROM transactionlist where date(TranDateTime) = '2008-08-17'

花费很长时间。

编辑:

看看上“这个博客帖子为什么可以和应该避免MySQL的DATETIME ”


问题答案:

如果我没记错的话,这将运行整个表扫描,因为您正在通过函数传递列。MySQL将乖乖地为每一列运行该函数,而绕过索引,因为查询优化器无法真正知道函数的结果。

我要做的是这样的:

SELECT * FROM transactionlist 
WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';

那应该可以给您提供2008-08-17发生的一切。



 类似资料:
  • 我需要比较MySQL中的日期,忽略列中的时间部分。我尝试了以下SQL。 即使MySQL表中有日期,它也不会检索任何行。在MySQL中比较日期时,如何忽略字段中的时间部分?

  • 问题内容: 我目前正在开发一个显示文件的应用程序,并允许成员通过许多不同的参数来搜索这些文件,其中一个是日期范围。 我遇到的问题是数据库架构不是我自己开发的,数据库的创建者创建了一个“ date”表,其中包含“ day”,“ month”,“ year”字段。 我想知道如何从表中选择特定的日期,月份,年份,并在SQL中创建日期对象,以便可以比较用户使用BETWEEN输入的日期。 下面是日期表的结构

  • 本文向大家介绍如何在MySQL查询中向datetime字段添加日期?,包括了如何在MySQL查询中向datetime字段添加日期?的使用技巧和注意事项,需要的朋友参考一下 要将日期添加到日期时间字段,请使用DATE_ADD()函数。语法如下- 让我们首先创建一个表- 借助插入当前日期,然后使用date_add()函数添加一天。 要在表格中插入一天,以下是查询- 在select语句的帮助下显示记录。

  • 本文向大家介绍MySql用DATE_FORMAT截取DateTime字段的日期值,包括了MySql用DATE_FORMAT截取DateTime字段的日期值的使用技巧和注意事项,需要的朋友参考一下 用 DATE_FORMAT 来格式化日期字段

  • 问题内容: 我有一堆记录,日期格式为字符串,例如“ 04/17/2009” 我想将它们转换为mysql datetime字段 我计划使用foreach循环读取旧的日期值,并将新格式化的值插入每个记录的新字段中 什么是转换字符串的最佳方法…我认为php可能有一种自动执行此方法的方法? 谢谢 问题答案: 首先,将字符串转换为时间戳: 然后做一个