Dosya boyutu arttıkça hız azalıyorsa doğru index kullanmadığın anlamına gelir. Indexler sql yapılarında verilerin nerede olduklarını işaret eden temel yapıtaşlarıdır. Doğru ayarlandığında verilerin sistem tarafından kolayca bulunmasını sağlar.
mysql sorgusunda where koşulundan sonra x = y olarak belirttiğin fieldlerin doğru yapıda olmalarını ve index atanmış olmalarını check edip düzeltirsen sorunun çözülür.
Verilen cevapları check edebileceğin bir sistem yaptıysan log tablosu şu şekilde olursa performans açısından işine yarar.
loglar
-- ID (log benzersiz id unique & auto inc.)
-- Sınav ID (bir üst tablodan hangi sınavın cevapları olduğunu karıalaştıracağın) (integer maks 11 length)
-- User ID (User bilgisini karşılaştıracağın) (integer maks 11 length)
-- Data (longtext)
Keyler
-- ID (primary key)
-- SInav ID ( index key)
-- User ID ( index key)
Sınav sonucları online yapıldığ için log alırken gönderilen formun tamamını $_POST değişkeniyle alıyorsun. Ve bu globalin içerisine array olarak yazılıyor o zaman tamamen bu değişkeni json hale getirip loglamak en mantıklısı olacaktır yani
<?php
$log = json_encode($_POST);
?>
Bu $log değişkeninide data fieldinin içerisine gireceksin. logtext olarak orada saklayacaksın. Daha sonra veriyi sinav id ve user id ie çektikten sonra json_encode ile data değerinin içerisindeki verileri okunabilir hale getirebileceksin.
70mb lik bir tablo öyle ahım şahım bir tablo değil 10 gb lik tablolardan 0.003 saniyede veri çekiyoruz bunu doğru atanmış indexler sağlıyor.
Bu kadar.