-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.sql
64 lines (50 loc) · 1.57 KB
/
index.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-- Backuptaki veriler performans farkını görmekte yetersiz olduğu için burda geçici tablo oluşturup ratgele veriler ekledik
CREATE TABLE tblOyun (
OYUN_ID INT PRIMARY KEY IDENTITY(1,1),
OYUN_ASILAD NVARCHAR(100),
YAYINLANDIGI_YIL DATE,
OY_VEREN_KULLANICI_SAYISI INT
);
GO
SELECT * FROM tblOyun
-- Rastgele veri ekleme.
SET NOCOUNT ON;
DECLARE @i INT = 1;
WHILE @i <= 1600
BEGIN
INSERT INTO tblOyun (OYUN_ASILAD, YAYINLANDIGI_YIL, OY_VEREN_KULLANICI_SAYISI)
VALUES (
CONCAT('Oyun_', @i % 10000), -- 10,000 farklı oyun adı
DATEADD(YEAR, -(@i % 30), GETDATE()), -- Rastgele yıl (son 30 yıl içinde)
ABS(CHECKSUM(NEWID()) % 5000) -- 0-5000 arasında kullanıcı sayısı
);
SET @i = @i + 1;
END;
GO
-- İlk sorgu: İndeks oluşturulmadan sorgu performansını test et
SET STATISTICS IO ON;
SELECT
OYUN_ID, OYUN_ASILAD, YAYINLANDIGI_YIL, OY_VEREN_KULLANICI_SAYISI
FROM
tblOyun
WHERE
YAYINLANDIGI_YIL > '2010-01-01'
AND OY_VEREN_KULLANICI_SAYISI > 1000;
SET STATISTICS IO OFF;
GO
-- İlgili kolonlara non-clustered index oluştur
CREATE NONCLUSTERED INDEX IX_tblOyun_Yil_KullaniciSayisi
ON tblOyun (YAYINLANDIGI_YIL, OY_VEREN_KULLANICI_SAYISI)
INCLUDE (OYUN_ASILAD);
GO
-- İndeks oluşturulduktan sonra aynı sorguyu çalıştır
SET STATISTICS IO ON;
SELECT
OYUN_ID, OYUN_ASILAD, YAYINLANDIGI_YIL, OY_VEREN_KULLANICI_SAYISI
FROM
tblOyun
WHERE
YAYINLANDIGI_YIL > '2010-01-01'
AND OY_VEREN_KULLANICI_SAYISI > 1000;
SET STATISTICS IO OFF;
GO