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

SQLステートメントを引数可能にする理由は何ですか?

    クエリを引数不可にする最も一般的なこと 関数内にフィールドを含めることです where句内:

    SELECT ... FROM ...
    WHERE Year(myDate) = 2008
    

    SQLオプティマイザは、インデックスが存在する場合でも、myDateでインデックスを使用できません。文字通り、テーブルのすべての行に対してこの関数を評価する必要があります。使用する方がはるかに良い:

    WHERE myDate >= '01-01-2008' AND myDate < '01-01-2009'
    

    その他の例:

    Bad: Select ... WHERE isNull(FullName,'Ed Jones') = 'Ed Jones'
    Fixed: Select ... WHERE ((FullName = 'Ed Jones') OR (FullName IS NULL))
    
    Bad: Select ... WHERE SUBSTRING(DealerName,4) = 'Ford'
    Fixed: Select ... WHERE DealerName Like 'Ford%'
    
    Bad: Select ... WHERE DateDiff(mm,OrderDate,GetDate()) >= 30
    Fixed: Select ... WHERE OrderDate < DateAdd(mm,-30,GetDate()) 
    


    1. MySQLに最適なDBaaSソリューション

    2. Oracle-読み取り専用ユーザーを作成する方法

    3. SQL:2つの異なるauto_incrementを使用してリレーションテーブルを作成する

    4. MVC4:UserIsInRole-SQLServerデータベースに接続できません