orとunionテスト

23211 ワード


  
    
1 /*
2 or union : union ,
3 or :union SARG
4   */
5
6
7   CREATE TABLE fact_sales(date_id int , product_id int , store_id int , quantity int , unit_price numeric( 7 , 2 ), other_data char ( 1000 ))
8 GO
9 CREATE CLUSTERED INDEX ci ON fact_sales(date_id);
10 GO
11 PRINT ' Loading... ' ;
12 SET NOCOUNT ON ;
13
14 DECLARE @i int ;
15 SET @i = 1 ;
16
17 WHILE ( @i < 100000 )
18 BEGIN
19 INSERT INTO fact_sales
20 VALUES ( 20080800 + ( @i % 30 ) + 1 , @i % 10000 , @i % 200 , RAND () * 25 , ( @i % 3 ) + 1 , '' );
21
22 SET @i += 1 ;
23 END ;
24 GO
25 DECLARE @i int ;
26 SET @i = 1 ;
27
28 WHILE ( @i < 10000 )
29 BEGIN
30 INSERT INTO fact_sales
31 VALUES ( 20080900 + ( @i % 30 ) + 1 , @i % 10000 , @i % 200 , RAND () * 25 , ( @i % 3 ) + 1 , '' );
32
33 SET @i += 1 ;
34 END ;
35 PRINT ' Done. ' ;
36 GO
37 set statistics io on
38 go
39 select distinct date_id
40 from fact_sales
41 where store_id = 23 and (unit_price = 2.00 or product_id = 23 )
42 go
43 select date_id from fact_sales where store_id = 23 and (unit_price = 2.00 )
44 union
45 select date_id from fact_sales where store_id = 23 and (product_id = 23 )
46 go
47 select date_id from fact_sales where store_id = 23 and (unit_price = 2.00 )
48 union all
49 select date_id from fact_sales where store_id = 23 and (product_id = 23 )
50 go
51 set statistics io off
52
53 -- create index idx_product_id on fact_sales(product_id)
54 -- create index idx_store_id on fact_sales(store_id)
55 -- drop index fact_sales.idx_store_id
56 -- create index idx_store_id on fact_sales(unit_price)