1 / 26

İndeksler

İndeksler. Sibel SOMYÜREK. İndeks nedir?. İndeksler, kitapdaki fihrist(index) yapısı gibi  belirli bir değeri olan satırları daha hızlı bulmak için kullanılan bir veritabanı nesnesidir. Tablo ya da view üzerinde tanımlanırlar. İndeks nedir?.

ura
Download Presentation

İndeksler

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. İndeksler Sibel SOMYÜREK

  2. İndeks nedir? • İndeksler, • kitapdaki fihrist(index) yapısı gibi  • belirli bir değeri olan satırları daha hızlı bulmak için kullanılan bir veritabanı nesnesidir. • Tablo ya da view üzerinde tanımlanırlar.

  3. İndeks nedir? • Sorgu optimizasyonunda sıklıkla aranan alanlara index atama önemli bir yöntemdir. • İndex olmaksızın bir tablodaki belli bir veri aranırken tüm tablo baştan sona aranır. • Wikipedia- tüm makaleleri aramak • Başlık seçip aramak

  4. MYSQL’de indeks türleri • Primary key • Unique • indeks • Fulltext

  5. MYSQL’de indeks türleri • Primary key: benzersiz veri, her tabloda en fazla bir tane tanımlanabilir, boş olamaz • Unique: benzersiz veri, birden fazla olabilir, boş olabilir, • İndeks: tekrarlayan verilerde • Full text: Full text index metin eşleştirmelerinde kullanılır. Like içeren aramalar

  6. Örnek Create table kiralama( kira_id int(11) not null auto_increment, kira_tarihi datetime not null, envanter_id mediumint(8), musteri_id smallint(5), donus_tarihi datetime, calisan_id tinyint(3), son_guncelleme timestamp, Primary key (kira_id), Unique key ‘kiratarihi’ (kira_tarihi, envanter_id, musteri_id), Key ‘kiralama_envanter’ (envanter_id), Key ‘kiralama_musteri’ (musteri_id), Key ‘kiralama_calisan’ (calisan_id) )

  7. Örnek • Unique key ‘kiratarihi’ (kira_tarihi, envanter_id, musteri_id), • Kiratarihi isimli anahtar birleşik bir anahtır. (birden fazla alan içerir) • Gerçek hayatta aynı müşteri aynı envanteri aynı tarih saatte birden fazla kiralayamaz. • Aslında bu üç alan doğal birincil anhatdır. Ancak kira_id birincil anahtarın daha küçük olması amacıyla oluşturulmuştur.

  8. Örnek • Farklı depolama motorları birincil anahtarı farklı kullanır. • Innodb motoru birincil anahtarı her indekste her kayıtla birlikte saklar.

  9. İndeks • Mysql bir ya da birden fazla alanın indeks olarak tanımlanmasına imkan verir. • Where, like, max, min gibi komutların kullanıldığı alanlar • Sıklıkla arama yapılan alanlar

  10. Kısıt- indeks Create Table: CREATE TABLE `film_text` ( `film_id` smallint(6) NOT NULL, `title` varchar(255) NOT NULL, `description` text, PRIMARY KEY (`film_id`) )

  11. Kısıt-indeks • Kısıtlar (primary key ve unique key) benzersiz kayıtlar içerdikleri için veriyi aramayı hızlandırabilecek iyi birer index adayıdır. • Primary key ve unique key tanımlandığındığında mysql veritabanında indeksler otomatik olarak oluşturulur. • Her ne kadar kısıtlar ve indexler birbirlerinden oldukça farklı olsa da mysql de primary key ve unique key hem key hem de indeks olduğu için key kelimesi her ikisi için de kullanılmaktadır.

  12. Avantajı-Dezavantajı • İndex olan bir alanda ekleme, güncelleme silme işlemleri yapıldığında indexte değişmek zorundadır. • Bu şu anlama gelir: veri arama hızlanırken veri güncelleme yavaşlar. • Veri güncellenirken önce kısıtlara bakılır, kısıtlar gerçekleştiyse indeksler güncellenir.

  13. İndeks Oluşturma Yöntemleri • İndeksler 3 şekilde oluşturulabilir: • Tablo oluşturulurken (Create table) • Tablo değiştirilirken (Alter table) • İndeks oluşturarak (Create index)

  14. İndeks Oluşturma Yöntemleri • Tablo oluşturulurken (Createtable) • Örnek: • createtableeng_tur ( kelime TEXT, anlami TINYTEXT, Index(kelime))

  15. İndeks Oluşturma Yöntemleri • Tablo oluşturulurken (Createtable) • Örnek: • createtableeng_tur ( kelime TEXT, anlami TINYTEXT, KEY ‘indekskelime’ (kelime))

  16. FulltextIndex • Sadece MYISAM tablolarında geçerli • MYSQL INNOdb depolama motoru kullanılır. • Bu nedenle fulltext indeks oluşturulduğunda hata verir.

  17. Full text indeks • Hata • «The used table type doesn't support FULLTEXT indexes» • ALTER TABLE film_text2 ENGINE = MYISAM

  18. İndeks oluşturma- Full text CREATE TABLE `film_text2` ( `film_id` smallint(6) NOT NULL, `title` varchar(255) NOT NULL, `description` text, PRIMARY KEY (`film_id`), FULLTEXT KEY `idx_title_description` (`title`,`description`) )

  19. MYISAM kayıt motoru ile tablo oluşturma • CREATE TABLE `film_text4` ( `film_id` smallint(6) NOT NULL, `title` varchar(255) NOT NULL, `description` text, PRIMARY KEY (`film_id`), FULLTEXT KEY `idx_title_description` (`title`,`description`) )ENGINE = MYISAM

  20. İndeks Oluşturma Yöntemleri • İndeks oluşturarak (Create index) ile • Unique • Fulltext ve • Spatial indeksler sadece oluşturulabilir. • Örnek: • CREATE INDEX idx_partial ON customer (name(10)); • CREATE UNIQUE INDEX idx_1 ON TEST1 (name);

  21. İndeks Oluşturma Yöntemleri • Tablo değiştirilirken (Alter table) • Örnek: • ALTER TABLE customer ADD INDEX idx_partial(name);

  22. Tekrarlayan indeks • Aynı alan için tekrarlayan indeks oluşturma hata vermez ancak performansı azaltır.

  23. İndeksi kaldırmak • İndeksi kaldırmak için: • DROP INDEX indeksname ON tabloname • Örnek: • DROP INDEX idx_partial ON customer;

  24. İndeks Sırası • Btree indeksler sadece artan sırada sıralanır. • Mysql veritabanı indeksleri sadece artan sırada depolar. Aksi belirtildiğinde hata vermez ama aslında bunu gerçekleştirmez. • Örnek: • Alter table customer ADD index(first_name DESC) • DESC iadesini MYSQL göz ardı eder.

  25. İndeks uzunluğu • Metin türündeki indekslerde indeks değerinin uzunluğunu belirtebilirsiniz. • Maksimum indeks metin uzunluğu 45 karakter olabilir. 182 byte olabilir. • Örnek: • CREATE INDEX idx_partial ON customer (name(10));

  26. Okuma görevi • Kayıt motoru hakkında aşağıdaki web sayfasında yer alan bilgileri okuyunuz. • http://tr.wikipedia.org/wiki/MyISAM

More Related