私は2つのテーブルを持っています:ベター・インデックスは
SELECT * FROM orders where customer_id = @id
SELECT * FROM orders where customer_id = @id and order_date > @date
SELECT * FROM orders where order_date > @date1 and order_date < @date2
SELECT first_name, last_name, favorite_website FROM customers where last_name = @last_name
SELECT customer_id, first_name, last_name,favorite_website
FROM customers where last_name = @last_name and favorite_website = @site
私はこれらのテーブルのインデックスを作成して、その作成によって上記の質問の実装が加速されるようにしたいと考えています。
私が見つけた唯一のインデックスは、以下のとおりです。
1.`create index indexorders on orders (order_id, customer_id, order_date, product_id, order_quantity);`
2.`create index indexcust on customers (customer_id, last_name, first_name, favorite_website);`
はこれらよりも優れている任意の他のインデックスはありますか?いくつかお勧めしますか?受注テーブルに
すべてのクエリに対して 'select'に' * 'をしたいですか?インデックスはイオンカラムの選択に基づいて最適化することができます –
例のワークロードでは検索されないため、order_idカラムを最初のインデックスに置くことは無意味です。 BETWEENと>およびとの間に>があるので、 'order_date'をクラスタード・インデックスの最初の列に、おそらく' customer_id'をクラスタード・インデックスの2番目の列にするのが理にかなっています。 –