簡體   English   中英

SQL查詢的Where子句數月和數年

[英]Where clause for SQL query for months and years

我編寫了一個帶where子句的Sql查詢,將結果范圍縮小為start month start yearend month end year 請在下面找到帶有where子句的部分(我的查詢非常復雜,因此我不想提供所有詳細信息):

SELECT *
  FROM foo
  WHERE (year, month) between (startYear, startMonth) and (endYear, endMonth);

請注意,我發現它非常易於理解和表達。 速度如何? 有更快的選擇嗎? 如果是這樣,它們的外觀如何?

通常,在編寫SQL查詢時,您不必真正擔心速度。 成熟的SQL Server將為您選擇合理的執行計划。 因此,您的查詢可能很好。 您可以檢查以下幾件事:

  • 您可以檢查where子句中的列是否有索引。
  • 如果有復合索引,則可以確保以與列在索引定義中出現的順序相同的方式使用這些列。
  • 您可以確保在WHERE子句中使用搜索參數 簡而言之,這意味着在與列值進行比較之前不對它進行計算。

如果此速度對您來說不夠好,則可以調整查詢的索引。 即添加與您的where子句匹配的索引。 一些RDBMS允許您按日期對表進行分區。 有時,您可以用一些簡單查詢和臨時表替換一個復雜查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM