当前位置: 首页 > 知识库问答 >
问题:

MySQL选择datetime匹配day的位置(不一定是时间)

曹臻
2023-03-14
2012-12-24 00:00:00
2012-12-25 00:00:00
2012-12-25 06:00:00
2012-12-26 05:00:00

共有1个答案

巫欣荣
2023-03-14

永远不要使用像date(datecolumns)='2012-12-24'这样的选择器--它是性能杀手:

  • 它将为所有行(包括那些不匹配的行)计算date()
  • 这将使查询无法使用索引

使用起来要快得多

SELECT * FROM tablename 
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
SELECT * FROM tablename 
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
 类似资料:
  • 问题内容: 我有2个具有相同主键的表(A和B)。我想选择A中而不是B中的所有行。 但是,这似乎很糟糕(A中只有10万行,而B中只有3-10k的行大约2秒) 有更好的方法来运行此吗?也许是左派? 根据我的数据,运行速度似乎稍快(〜10%),但是总体上呢? 问题答案: 我以第二个示例的格式使用查询。联接通常比相关子查询更具可伸缩性。

  • 问题内容: 我有一个包含datetime列的表。我希望无论何时都返回给定日期的所有记录。换句话说,如果我的表仅包含以下4条记录,那么如果我限制为2012-12-25,则仅返回第二和第三条记录。 问题答案: 永远不要 使用像这样的选择器-它是性能杀手: 它将为所有不匹配的行(包括那些行)计算 它将无法使用索引进行查询 使用起来更快 因为这将允许索引使用而无需计算。 编辑 正如Used_By_Alre

  • 问题内容: 我有一个交叉引用表: 我需要选择与 所有 标签集匹配的ID 。例如,如果给我标签,我将获得ID 。如果给我标签,我将不会获得任何ID,因为没有与 所有 标签匹配的ID 。 另外,如果为我提供了标签,那么我也不应该获得任何结果ID,因为搜索将得到一个值,因此没有ID与 所有 标签匹配。 最近两天我一直在拔头发。希望有人可以帮助我。 问题答案: 查询的想法是,您需要将记录数与子句中提供的值

  • 问题内容: 如何仅返回MySQL中字段的第一个不同匹配项? 我的表: 我的查询(用于): 这将返回: 而不是:( 我追求的结果) 如何只获得每个唯一名称的第一个匹配项? 我想返回第一个,跳过第二个(以及任何后续的匹配项),但仍然得到(以及任何其他不同的匹配项,例如或)。 问题答案: 不能以这种方式工作,返回的所有列中的值都必须是不同的。 您可以始终在该函数上使用聚合函数,该函数将为每个函数返回一个

  • 我想选择每个有明天日期时间的记录,不管一天中的什么时候。 然而,明天只指明天(午夜后)开始一天。这是一个时间点,不涵盖一整天。 所以我可以在我的查询中这样做? 但是什么 有什么想法吗?