Etiket arşivi: çok fazla data

MYSQL MİLYON VERİLER İLE SORT PERFORMANSI

Merhabalar, Mysql listeleme gibi işlemlerde veri sayısı çok fazla olunca (50-100 milyon+), sort gibi işlemlerde istediğiniz sürede veri gelemiyor,

1. Öneri Where kısımların kullandığınız tüm içerikde ikdeks gereklidir. (ÖNEMLİ UYARIMIZ)

2. Benim Önerdiğim yöntem ise

Kırmızı olan gelmesini istediğimiz sql, ortalama 5,6 saniyede çıkıyor,

bize gerekli olan alanlar IlanID,sehir,vilayet,IlanFiyati,IlanBirim,IlanAvantaji,IlanTarih,vitrin

select * from ilanlar i,(kırmızı sql) aa

dersek içerisindeki çıktı sonucunu aa sanal tablosuna sadece 25 adet veri ile aktarmış oluyor böylece sıralama işlemlerinde hızlı veri almamıza olanak sağlıyor…

where i.ilanid=aa.ilanid

kodu ile içeriden gelen veriyi i sanal tablosuna eşitlemiş oluyoruz….

select sorgumuzu şimdi böyle

select içerisinde kırmızı sql den çekmek istediğimiz sql’i aa tablosundan dış alandan ise aa ile çekiyoruz

böylece istediğimiz performansı yakalıyoruz…

select `i`.`IlanID`,
`i`.`IlanBaslik`,
`aa`.`sehir`,
`aa`.`vilayet`,
`i`.`IlanFiyati`,
`i`.`IlanBirim`,
`i`.`IlanAvantaji`,
`i`.`IlanTarih`,
`i`.`vitrin`
FROM ilanlar i,( SELECT `ilanlar`.`IlanID`,`iller`.`sehir`,`ilceler`.`vilayet`

FROM `ilanlar`,`iller`,`ilceler`
WHERE
`ilanlar`.`ilanil`=`iller`.`id` AND
`ilanlar`.`ilanilce`=`ilceler`.`id` AND `kategoriid`=1 AND

`ilanlar`.`IlanOnay`=1 AND

(`ilanlar`.`IlanBirim`=0) AND
(`ilanlar`.`q0`=1 or `ilanlar`.`q0`=2 or `ilanlar`.`q0`=3 or `ilanlar`.`q0`=4 or `ilanlar`.`q0`=5 or `ilanlar`.`q0`=6 or `ilanlar`.`q0`=7 or `ilanlar`.`q0`=8 or `ilanlar`.`q0`=9 or `ilanlar`.`q0`=10 or `ilanlar`.`q0`=11 or `ilanlar`.`q0`=12 or `ilanlar`.`q0`=13 or `ilanlar`.`q0`=14 or `ilanlar`.`q0`=15 or `ilanlar`.`q0`=16 or `ilanlar`.`q0`=17 or `ilanlar`.`q0`=18 or `ilanlar`.`q0`=19 or `ilanlar`.`q0`=20 or `ilanlar`.`q0`=21 or `ilanlar`.`q0`=22 or `ilanlar`.`q0`=23 or `ilanlar`.`q0`=24 or `ilanlar`.`q0`=25 or `ilanlar`.`q0`=26 or `ilanlar`.`q0`=27 or `ilanlar`.`q0`=28 or `ilanlar`.`q0`=29 or `ilanlar`.`q0`=30 or `ilanlar`.`q0`=31 or `ilanlar`.`q0`=32 or `ilanlar`.`q0`=33 or `ilanlar`.`q0`=34 or `ilanlar`.`q0`=35) AND
(`ilanlar`.`q1`=36 or `ilanlar`.`q1`=37 or `ilanlar`.`q1`=38 or `ilanlar`.`q1`=39 or `ilanlar`.`q1`=40 or `ilanlar`.`q1`=41 or `ilanlar`.`q1`=42 or `ilanlar`.`q1`=43) AND
(`ilanlar`.`q2`=44 or `ilanlar`.`q2`=45 or `ilanlar`.`q2`=46 or `ilanlar`.`q2`=47 or `ilanlar`.`q2`=48 or `ilanlar`.`q2`=49 or `ilanlar`.`q2`=50 or `ilanlar`.`q2`=51 or `ilanlar`.`q2`=52 or `ilanlar`.`q2`=53 or `ilanlar`.`q2`=54 or `ilanlar`.`q2`=55) AND
(`ilanlar`.`q3`=56 or `ilanlar`.`q3`=57 or `ilanlar`.`q3`=58 or `ilanlar`.`q3`=59 or `ilanlar`.`q3`=60 or `ilanlar`.`q3`=61 or `ilanlar`.`q3`=62 or `ilanlar`.`q3`=63 or `ilanlar`.`q3`=64 or `ilanlar`.`q3`=65 or `ilanlar`.`q3`=66 or `ilanlar`.`q3`=67 or `ilanlar`.`q3`=68 or `ilanlar`.`q3`=69 or `ilanlar`.`q3`=70 or `ilanlar`.`q3`=71 or `ilanlar`.`q3`=72 or `ilanlar`.`q3`=73 or `ilanlar`.`q3`=74 or `ilanlar`.`q3`=75 or `ilanlar`.`q3`=76 or `ilanlar`.`q3`=77 or `ilanlar`.`q3`=78 or `ilanlar`.`q3`=79 or `ilanlar`.`q3`=80 or `ilanlar`.`q3`=81 or `ilanlar`.`q3`=82 or `ilanlar`.`q3`=83 or `ilanlar`.`q3`=84 or `ilanlar`.`q3`=85) AND (`ilanlar`.`q4`=86 or `ilanlar`.`q4`=87 or `ilanlar`.`q4`=88 or `ilanlar`.`q4`=89 or `ilanlar`.`q4`=90 or `ilanlar`.`q4`=91 or `ilanlar`.`q4`=92 or `ilanlar`.`q4`=93 or `ilanlar`.`q4`=94 or `ilanlar`.`q4`=95 or `ilanlar`.`q4`=96 or `ilanlar`.`q4`=97 or `ilanlar`.`q4`=98 or `ilanlar`.`q4`=99 or `ilanlar`.`q4`=100 or `ilanlar`.`q4`=101 or `ilanlar`.`q4`=102 or `ilanlar`.`q4`=103 or `ilanlar`.`q4`=104 or `ilanlar`.`q4`=105 or `ilanlar`.`q4`=106 or `ilanlar`.`q4`=107 or `ilanlar`.`q4`=108 or `ilanlar`.`q4`=109 or `ilanlar`.`q4`=110 or `ilanlar`.`q4`=111 or `ilanlar`.`q4`=112 or `ilanlar`.`q4`=113 or `ilanlar`.`q4`=114 or `ilanlar`.`q4`=115) AND
(`ilanlar`.`q5`=116 or `ilanlar`.`q5`=117 or `ilanlar`.`q5`=118 or `ilanlar`.`q5`=119 or `ilanlar`.`q5`=120 or `ilanlar`.`q5`=121 or `ilanlar`.`q5`=122 or `ilanlar`.`q5`=123 or `ilanlar`.`q5`=124) AND
(`ilanlar`.`q6` BETWEEN 100 and 500) AND
(`ilanlar`.`q7`=1) ORDER BY `ilanlar`.`IlanID` DESC LIMIT 55674,25

) aa where i.ilanid=aa.ilanid