استخدم الفهرس يا لوقا! › SQL Server سكربتات المثال لـ «تجميع البيانات» 122 / 139 السابق التالي

سكربتات SQL Server لـ«تجميع البيانات»

يحتوي هذا القسم على شيفرة create وinsert وT-SQL لتشغيل أمثلة الفصل 5تجميع البيانات: القوة الثانية للفهرسة في قاعدة بيانات SQL Server. وهو يتطلب الدالتين المساعدتين RANDOM_DATE وRANDOM_INT من أمثلة جملة where.

الجدول المنظَّم بالفهرس (الفهرس العنقودي)

ينشئ ما يلي جدول مبيعات ثانياً بفهرس عنقودي وفهرس ثانوي على SALE_DATE.

CREATE TABLE sales_clst (
  sale_id       NUMERIC NOT NULL,
  employee_id   NUMERIC NOT NULL,
  subsidiary_id NUMERIC NOT NULL,
  sale_date     DATE    NOT NULL,
  eur_value     NUMERIC(17,2) NOT NULL,
  junk          CHAR(200),
  CONSTRAINT sales_pk     
     PRIMARY KEY (sale_id),
  CONSTRAINT sales_emp_fk 
     FOREIGN KEY          (subsidiary_id, employee_id)
      REFERENCES employees(subsidiary_id, employee_id)
);
GO

SELECT RAND(0);
GO

WITH generator (n)
  AS (
     SELECT 1
      UNION ALL
     SELECT n + 1
       FROM generator
      WHERE N < 1800
     )
INSERT INTO sales_clst (sale_id
                      , subsidiary_id, employee_id
                      , sale_date, eur_value, junk)
SELECT row_number() OVER (ORDER BY sale_date), data.*
  FROM (
       SELECT e.subsidiary_id, e.employee_id
            , [dbo].random_date(0, 3650) sale_date
            , [dbo].random_int(1, 100000)/100 eur_value
            , 'junk' junk
         FROM employees e
            , generator gen
        WHERE employee_id % 7 = 4
          AND gen.n < employee_id / 5
       ) data
        ORDER BY sale_date
OPTION(MAXRECURSION 2000);
GO

EXEC sp_updatestats;
GO