sql >> データベース >  >> RDS >> Sqlserver

YEAR(date)関数はどのくらい効率的ですか?

    1年に一致する行を「テーブルで検索」するために、計算列を用意する必要はありません。代わりに間隔を使用してwhere句を記述し、日付列にインデックスを付けます。

    select SomeColumn
    from YourTable
    where ActivityDate >= '20110101' and
          ActivityDate < '20120101'
    

    2つの文字列の代わりにint(年)をクエリの引数として使用する場合は、dateaddを使用できます。 。 SQL Serverはインデックスを使用できないため、ActivityDate列に関数/操作を適用しないように注意してください。

    declare @Year int = 2011
    
    select SomeColumn
    from YourTable
    where ActivityDate >= dateadd(year, @Year-1900, 0) and
          ActivityDate < dateadd(year, @Year-1899, 0)      
    


    1. 相関関係を見つける非常に遅いMySQLクエリを最適化する方法

    2. チェックボックスの条件が変更されたときにajaxを使用してmysqldbを更新するにはどうすればよいですか?

    3. 名前にダッシュが含まれているテーブルに挿入します

    4. データベースの列からコンマ区切りのドロップダウン値を表示する