Salam məndə bir cədvəl var.Təqribən 14 milyon sətr informasiya yerləşir onda.Bu cədvəldə bir sütün var ki 1-dən 12 kimi qiymət ala bilir.
Cədvələ göndərilmiş sql sorğunun tez işləməsi üçün bu sütunu enum (DOVR ENUM(‘1′,’2′,’3′,’4′,’5′,’6′,’7′,’8′,’9′,’10’,’11’,’12’) DEFAULT ‘1’) etsəm sürət artarmı?Yəniki sütunun enum olması sürətə təsir edirmi?Bu cədvəli Myİssam olsa daha sürətli axtarış olar yoxsa İNNODB….? Bir sözlə cədvəli necə edimki sql sorğular daha tez işləsin…. Əvvəlcədən minnətdaram.
Verilmiş cavablar və yazılan şərhlər (4 cavab var)
1
Bu sual bir dəfə verilib.
http://cavablar.net/2011/09/05/sql/
DBMS MS SQL Server-dirsə, İtzek Ben-Gan-in bu movzuda super kitabları var. Apres nəşriyatın da SQL Server 2008 Query Performance Tuning Distilled adlı kitabı var.
1
Sizin yazdığınız SQL sorğularında şərt qoyulmuş sütunlar üzrə indekslər var? Yoxdursa, yaradın, varsa, həmin indekslərin sql sorğusunda istifadə olunduğunu yoxlayın.
2
Salam,
ENUM’un meqsedi esasen datanin daha compact saxlanmasidir. Misalcun 14 milyon setirlik cedvelde bir sutunda “isleyir” yada “islemir” yazilsaydi, onda bu field cox boyuk yer tutardi, onun yerine o sutuna ENUM(“isleyir”,”islemir”) yaradib o sekilde istifade olunsa onda bu iki soz ucun iki id yaradilir ve sutunda o id yazilir. Bu da datanin boyukluyunun ciddi sekilde azalmasi demekdir. ENUM’un isleyis mentigi bu sekildedir.
Indi baxaq, sizin sualda ENUM bize performans terefde nese qazandiracaq? yox.
Gelek index meselesine bu sutunu indexlesek yaxsi netice almaq olar ? yox. niye ? cunku indexlesen bele 14 milyonluq cedvelde id’si 1 olan 5 milyon setir olacaq. demeli bu sutuna index atmaq da ele yaxsi variant deyil.
Bes neyniyek ? SQL sorgusunda bu sutundan basqa hansi sutunu istifade edirsiz ? bax onu indexlemek lazimdir. Misalcun:
SELECT * FROM hede WHERE id=2 and cat_id=2903;
Sorgu buna benzerdise birinci is cat_id’ye index qoymagdir. Lap bomba oglansansa, sorgularin ucmagini isteyirsense onda da (cat_id,id) ikisine birden index goymag lazimdi. Diqqet! ikili index’de de cat_id qabaqda yazilir, niye ? ele yuxardaki sebeblere gore.
0
Maraqlı cavabdır ))
Sual verin
Cavab verin