İNDEKS.

Slides:



Advertisements
Benzer bir sunumlar
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Advertisements

Hazırlayan : Öğr. Gör. Fahri YILMAZ
4 SQL- Yapısal Sorgulama Dili
Tablo oluşturma İlk olarak tabloları oluşturmamız gerekli..
MySQL Veritabanı Sunucusu ve MySQL Veritabanı Kullanımı
Performance Tuning Performans Düzenleme Teknikleri.
SQL (Structured Query Language)
SQL Structured Query Language (Yapısal sorgulama dili)
SQL’e Giriş.
Normalizasyon Kuralları & SQL
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL Komutlar 5 Sibel SOMYÜREK.
İndeksler Sibel SOMYÜREK.
EkoPC Bilişim Ltd. Eğitim Hizmetleri
5 Sorgulama İşlemleri Veritabanı 1.
Veri Tabanı Yönetim Sistemleri
Tek Tablo İçinde Sorgulamalar
SQL Sorgu Örnekleri.
Veritabanı Yönetim Sistemleri Hızlı ve Kısa Giriş
T-SQL-2.Konu Akış Kontrolleri.
Veri Tabanı Yönetim Sistemleri
Veri Tabanı Yönetim Sistemleri
VeriTabanı Uygulama. Tabloları yaratmak için MySQL komutları.
BÖLÜM 6 SQL SERVER KOMUTLARI.
SQL (STRUCTURED QUERY LANGUAGE)
VERİTABANI TEMEL KAVRAMLARI
Veritabanı Yönetim Sistemleri-I
VIEW (BAKIŞ) OLUŞTURMA
VIEW lerle çalışmak 11.BÖLÜM.
SQL Dili ve MySQL Komutları
SQL’e Giriş ve SELECT Komutu
MySQL Operatörleri ve Fonksiyonları
VeriTabanı Uygulama.
Varlık-İlişki Modeli (E-R Modeli)
SQL (Structured Query Language). MySQL de Temel Komutlar : CREATE DATABASE isim; verilen isimde bir veri tabanı oluşturur. SHOW DATABASES; Tüm yaratılan.
Veritabanı Kavramları
Görsel Programlama II Ders 5 Öğr.Gör. Mustafa KARABULUT.
SQL Sibel SOMYÜREK.
Veritabanı Yönetim Sistemleri-I
SQL Komutları (2) Uzm. Murat YAZICI.
VTYS Öğr. Gör. Engin DUTAR
SQL’ e Giriş Uzm. Murat YAZICI.
Veritabanı Kavramları
Raporlama Menüleri Emine TUNÇEL Kırklareli Üniversitesi, Pınarhisar Meslek Yüksekokulu.
GÜVENL İ K. Sunucu Seviyesinde Güvenlik Master Veritabanı (Kullanıcının gerekli yetkileri var mı?) Authentication Mod ◦ Windows Authentication Mod  Varsayılan.
ADRESİNDEN ÖRNEK VERİ TABANLARINI İNDİRİNİZ
Yeni Veritabanı Oluşturma
Yapısal Sorgulama Dili SQL VTYS Giriş Hafta 5 Ders Notu.
SQL Server’da Index Kavramı
EurobankTekfen SQL Server DBA Turgay Sahtiyan.
Yapısal Sorgulama Dili SQL Hafta 7. TEKRARLI SATIRLARI ÖNLEMEK  DISTINCT komutu ile sorgu sonucunda birden fazla kayıt aynı verileri içeriyorsa tekrarlı.
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
Altıncı hafta. Müfredat programı Ödev teslim edenler Mantıksal tasarım ödevini teslim edenler: Belediye Projesi Valilik Projesi Mekan Projesi Konaklama.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
 Bazı Veri tabanları sadece 1 tablodan oluşmaz.  Bunun sebebi genellikle veri tekrarını önlemektir.  Bu şekilde oluşturulmuş veri tabanlarında, tablolardaki.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
VERİTABANI TEMEL KAVRAMLARI
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
VIEW lerle çalışmak 11.BÖLÜM.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VERİ TABANI SQL (STRUCTURED QUERY LANGUAGE) SAVAŞ TUNÇER.
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 1
SQL (STRUCTURED QUERY LANGUAGE)
SQL Server - Indexes.
SQL Server - Views.
VERİTABANI YÖNETİM SİSTEMLERİ 6-SQL Server-3-DDL
Sunum transkripti:

İNDEKS

INDEKSLER İndeks, tablolardan veri çekmek için gerekli sorgular çalıştırılırken gereken süreyi azaltmak amacıyla kullanılır. Veritabanının performansını artırmak için kullanılır. Indeksler hangi kayıtların hangi tablolarda bulunduğunu gösteren kitapların başındakine benzer bir mantığı olan araçlardır. Birkaç kayıt için bu süre pek önem arz etmese de, milyonlarca kayıt olduğu durumda hayati önem taşır.

Tablo Taraması Büyük bir kütüphanedeki görevlinin, demirbaş olarak gelen her kitabı gördüğü ilk boş rafa koyduğunu düşünelim Bu şekilde kitaplar belli bir kurala göre dizilmiyorsa ortaya çıkan yapıya yığıt (heap) denir. Bu kütüphanede, yani kitap tablosunda, okurun aradığı kitabı bulabilmek için bütün kitapları tek tek kontrol etmek gerekir. Bu duruma Tablo Taraması (table scan) denir. Bu işlem, birkaç yüz kayıt için çok sorun olmasa da yüz binlerce kitap için oldukça zor bir işlemdir.

Clustered İndeks Tablo tarama işleminden kaçınmak için, okurun istediği kitabı hızlı bir şekilde bulabilmek için kitapları adlarına göre raflara alfabetik sıralamak en pratik çözümdür. Böylece istenilen bir kitap kolayca bulunur. Bu durumda kitap tablosunda kitap adları sütunu için bir Clustered İndeks tanımlamış oluruz. Clustered İndeks bir tablo üstünde sadece bir adet tanımlanabilir ve verilerin bir niteliğine göre fiziksel olarak sıralanmaları halini ifade etmek için kullanılır. Eğer okurlar kitap adına göre değil de yazar adına göre kitaba ulaşmak isterse?

Nonclustered İndeks Örneğin, Mehmet Akif Ersoy’a ait bir şiir kitabı almak isteyelim. Bu durumda, clustered index aranan kitaba hızlı erişim için faydalı olmaz . (Çünkü kitap adına göre erişim mümkün, “Yaban”, “Ateşten Gömlek” gibi) Çözüm, yazarların adına göre sıralanmış, yazar adından kitap adına geçişi sağlayabilecek şöyle bir liste oluşturmak;

Nonclustered İndeks Bu listeye Nonclustered indeks denir. Nonclustered indeksler bir Clustered indeks veya Heap üstünden hızlı olarak kayıtlara ulaşmak için tanımlanırlar.

Özetle indeksleme Temel Amaç: veriye hızlı erişim Kütüphane örneği üzerinden; Heap : Üstünde hiç veri olmayan tablodur. Yani üstünde hiç bir fiziksel sıralayıcı kural tanımlanmamıştır. tanımlanmamıştır. Clustered indeks: Kitapları adlarına göre alfabetik sıralı olarak raflara yerleştirme. Nonclustered indeks: Raflara sıralama bilgisini kullanarak yeni bir sıralama yapmak.

Özetle indeksleme Nonclustered indeks, ISBN için, sayfa sayısı için veya kitaplar tablosundaki diğer tüm sütunlar için de hazırlanabilir. Az sayıdaki kayıt için tablo taraması hızlı sonuç gönderirken; çok sayıdaki kayıt için Nonclustered indeks avantaj sağlar. SQL server alt programı olan Query Optimiser, tablo için hangi yöntemin daha verimli olacağına karar verir.

Bir tablo için Bir tablo için şu dört durumdan biri geçerlidir: 1. Tablo heap'tır. Yani üstünde hiç bir fiziksel sıralayıcı kural tanımlanmamıştır. 2. Tablo üstünde bir Clustered Indeks tanımlıdır. Bir sütun veya bazen birden fazla sütunun birleşimi, veriler için sıralayıcı unsur olarak verilmiştir. 3. Tablo üstünde bir Nonclustered indeks tanımlanmıştır ama tablo üstünde clustered Indeks bulunmadığı için bu indeks, heap yapısı üstünden çalışmaktadır. 4. Tablo üstünde bir Nonclustered Indeks tanımlanmıştır ve tablo üstünde Clustered Indeks de vardır. Nonclustered Indeks, Clustered Indeks üstünden çalışmaktadır.

VTYS'leri Indeksleri Nerede Kullanır? Noktasal Sorguları Hızlandırmak için: WHERE cümleciğinden sonra belirtilen bir eşitliğe karşılık gelen sonuçları seçerken SQL server, uygun indeks bulursa tabloyu taramak yerine bulduğu indeksi kullanabilir. Örnek: SELECT * FROM Product WHERE productID=322 sorgusu çalıştırıldığında, Primary Key’den dolayı tanımlı olan Clustered Indeks kullanılmıştır.

2. Aralık Tarayan Sorguları Hızlandırmak için: Belli sütunlardaki değerleri bilinen bir aralıkta olan satırları getirmek için yazılan sorguları seçerken SQL server indekslerden yararlanabilir. Aralık tarayan sorgulara örnek olarak, BETWEEN, LIKE veya AND operatörü yardımı ile tanımlanan aralıklar verilebilir. Örnek: Ürün adı “CHA” ile başlayan ürünlerin bir listesini almak istersek; Use Adventureworks SELECT * FROM Product WHERE NAME LIKE ‘CHA%’

3) Tabloları birlikte sorgularken, birincil ve yabancı anahtar eşlemesini daha hızlı yapmak için indeksler kullanılır. 4) Veri tekrarından kaçınmak için Primary Key Constraint ve Unique Constraint olarak tanımlı sütunlar için arka planda indeksler kullanır. 5) ORDER BY kullanıldığında verileri belli sırada daha kısa zamanda döndürebilmek için indeksler kullanılır.

Indeks Oluşturmak İndeks oluşturmak için kullanılabilecek en basit ifade şu şekildedir: CREATE indeks_tipi INDEX indeks_adı ON tablo_adı(sütun_adı) Genel kullanımda; İndeks_tipi: Unique clustered veya sadece clustered, nonclustered şeklinde indeksin tipini belirtir. Tip belirtilmediğinde nonclustered’dir. İndeks_adı: İndekse verilen isim. Tablo_adı: İndeksin tanımlandığı tablo ya da view adı. Sütun_adı: Tablo ya da view’de indekslenmesi istenen sütun veya sütunların ismi.

Örnek Indeks Tanımlaması “Person_Bilgi” tablosunda “Sicil_No” sütunu üstünde Clustered Index tanımlansın. CREATE CLUSTERED INDEX Ind_Sicil ON Person_Bilgi (Sicil_No)

Örnek Indeks Tanımlaması SQL Server’da sıralı indeks oluşturabilir. Sıralı indeks için ASC veya DESC deyimleri sütun adlarıyla beraber kullanılır. Varsayılan sıralama değeri ASC’dir. CREATE INDEX Ind_Brut_Ucret ON Person_Bilgi (Brut_Ucret DESC)

Indeks Türleri 1. Unique İndeks Verilerin tekrarlanmaması için kullanılır. Aynı değerin bir daha girilmesini engeller. UNIQUE indeks, hem clustered hem de nonclustered tipte olabilir. Kısıtlayıcı (Primary Key Constraint veya Unique Constraint) tanımı yapıldığında Unique indeks otomatik olarak oluşur. Kullanıcı bir seçenek belirtmezse Primary Key Constraint SQL Server’ca Unique indeks olarak Unique Constraint’de nonclustered unique indeks olarak belirlenir.

1. Unique İndeks Örnek ALTER TABLE Person_Bilgi ADD CONSTRAINT PK_Sicil PRIMARY KEY(Sicil_No) CLUSTERED

2. Karma (Composite) veya Birleşik İndeks Birbiriyle ilişkili tablolar arasında bir tablonun iki sütunu birincil anahtar olarak belirlenebilir. Bu duruma karmaşık veya birleşik indeks denir.

2. Karma (Composite) veya Birleşik İndeks Örnek ALTER TABLE Personel ADD CONSTRAINT PK_Personel PRIMARY KEY (TCKimlikNo,Sicil_No) CLUSTERED

Indeksleri Yönetmek İndeks Silmek Oluşturulan indeks, işlevini yitirirse silinmesi gerekebilir. Bunun için, DROP INDEX komutu veya indeks özellikleri penceresi kullanılabilir. Genel Kullanımı DROP INDEX indeks_adı ON tablo_adı

“sp_helpindex” Komutu Bir tabloda hangi alanlarda ne tür indekslerin tanımlı olduğunu görmek mümkündür. Bu indeksleri görmek için “sp_helpindex” komutu kullanılır. Genel Kullanımı sp_helpindex tablo_adı