• 21-10-2022, 04:33:10
    #10
    sadece gerekli verileri çekin. SELECT * FROM ile tablodaki tüm kolonlar gelir. Çok yüksek yüklerde sıkıntı yaratır. Sadece isimler listeleniyorsa isimleri alın vs.
    Çok yüksek verilerde oracle database kullanabilirsiniz. Daha hiç deneyimlemedim ama iyi diyorlar.
  • 21-10-2022, 04:58:53
    #11
    Emin olmak icin gecen sureyi hesaplayin hocam belki farkli bir bakis acisi olur sizin icin. Sitenin acilis hizini assetler de etkiler unutmayin.

    $start = microtime();
    $query = mysql_query("SELECT * FROM table WHERE id IN (1,2,3,4)");
    $end = microtime();
  • 21-10-2022, 08:02:58
    #12
    Tek sorguda binlerce/ yuzbinlerce veriyi listelemek akıl işi değil
    Bu sonucu botlar da indexlemez
    Bunun için sayfalama var.
    • Slash
    Slash bunu beğendi.
    1 kişi bunu beğendi.
  • 26-10-2022, 07:07:27
    #13
    ard arda aynı sorguları test için gönderdiğinizde, sorgular sql cache den dönebilir o yüzden gerçek sonuç çıkmayabilir. bunun önüne SQL_NO_CACHE ile geçebilirsiniz.
    select SQL_NO_CACHE * from table where 1=1 gibi

    verdiğiniz örneklerde id nin uniq indexinin olduğunu varsayarsak ve oracle ın dediğine göre en hızlı sonuç vereninin
    SELECT * FROM table WHERE id BETWEEN 1 and 4;
    olması gerekir.
    fakat en iyi sonucu * olarak değilde istediğiniz sütünları isteyerek görebilirsiniz. select veri, veri2, veri3 gibi
    tüm bunların yanında explain ile de sorgunuzun nasıl çalıştığını hangi indexleri kullandığını veya kullanmadığını görebilirsiniz.
    sorgunuzun başına explain eklemeniz yeterli, explain select * from table where between 1 and 4
  • 26-10-2022, 09:57:51
    #14
    trgino adlı üyeden alıntı: mesajı görüntüle
    ard arda aynı sorguları test için gönderdiğinizde, sorgular sql cache den dönebilir o yüzden gerçek sonuç çıkmayabilir. bunun önüne SQL_NO_CACHE ile geçebilirsiniz.
    select SQL_NO_CACHE * from table where 1=1 gibi

    verdiğiniz örneklerde id nin uniq indexinin olduğunu varsayarsak ve oracle ın dediğine göre en hızlı sonuç vereninin
    SELECT * FROM table WHERE id BETWEEN 1 and 4;
    olması gerekir.
    fakat en iyi sonucu * olarak değilde istediğiniz sütünları isteyerek görebilirsiniz. select veri, veri2, veri3 gibi
    tüm bunların yanında explain ile de sorgunuzun nasıl çalıştığını hangi indexleri kullandığını veya kullanmadığını görebilirsiniz.
    sorgunuzun başına explain eklemeniz yeterli, explain select * from table where between 1 and 4
    en hızlı sorgunun Between yerine in olan seçenek ile geldiğini gözlemledim ve o sekilde islem yaptım.
    Sanırım sunucunun da farkı var sunucu değişikliği sonrasında 6-7 sn gibi süreler görülürken şuan 0.0041, 0.0030 lu süreleri görüyorum yüksek veri çekilmesine rağmen