我编写了一个带有where
子句的Sql查询,将结果缩小为start month start year
和end month end year
。请在下面带有where
子句的部分找到(我的查询非常复杂,因此我不想提供所有详细信息):
SELECT *
FROM foo
WHERE (year, month) between (startYear, startMonth) and (endYear, endMonth);
请注意,我发现它非常易于理解和表达。速度如何? 有更快的选择吗?如果是这样,它们看起来如何?
答案 0 :(得分:0)
通常,在编写SQL查询时,您不必真正担心速度。成熟的SQL Server将为您选择合理的执行计划。因此,您的查询可能很好。不过,您可以检查一些事情:
WHERE
子句中使用search arguments。简而言之,这意味着在与列值进行比较之前不要对它进行计算。如果此速度对您来说不够好,则可以调整查询的索引。即添加与where子句匹配的索引。一些RDBMS允许您按日期对表进行分区。有时,您可以用几个简单查询和临时表代替一个复杂查询。