【发布时间】:2016-01-29 02:50:24
【问题描述】:
SELECT dt AS Date
,monthname
,dayname
,(
SELECT COUNT(1)
FROM Calendar
WHERE DATEPART(MM, dt) = DATEPART(MM, c.dt)
AND DATEPART(YEAR, dt) = DATEPART(YEAR, c.dt)
) AS daysInMonth
FROM Calendar AS c
WHERE dt BETWEEN '2000-01-01 00:00:00'
AND '2020-02-01 00:00:00'
上述查询用于获取特定日期的特定月份的天数。这里我给出日期范围和范围之间的所有日期,我只是显示该月的日期。
该图显示了查询的结果,大约 7500 行需要 25 秒。谁能帮我减少时间。
【问题讨论】:
-
你使用什么风格的 SQL? MySQL? PostgreSQL?甲骨文?这可能会有所作为。
-
微软 sql server 2008
-
你不能同时拥有mysql和sql server
-
根据您的查询,看来您使用的是 SQL Server 而不是 MySQL
-
你有 dt 的索引吗?向我们展示您的查询的解释计划stackoverflow.com/questions/7359702/…
标签: sql sql-server sql-server-2008