SORU
19 Aralık 2010, Pazar


Neden MYSQL yüksek LİMİTLİ sorgu aşağı kaydır yavaş mı?

Kısacası senaryo: 16 milyondan fazla kayıtları [boyutu 2 GB] ile Bir tablo. Yüksek LİMİTİ SEÇİN, sorgu daha yavaş olan uzaklığı *primary_key* TARAFINDAN SİPARİŞ kullanırken olur

Bu yüzden

SELECT * FROM large ORDER BY `id`  LIMIT 0, 30 

far . az sürer

SELECT * FROM large ORDER BY `id` LIMIT 10000, 30 

O sadece emir 30 kayıtlar ve her halukarda aynı. Siparişten yükü İLE değil.
180 saniye civarında sürer son 30 satır getirilirken şimdi. Nasıl bu kadar basit sorgu optimize edebilirim?

CEVAP
21 Aralık 2010, Salı


Yüksek uzaklıklar sorgu OFFSET LIMIT ilk kayıt (ve sadece LIMIT) saymak gerekir, çünkü sorgu yavaşla, bu normal. Bu değer ne kadar yüksekse, ne kadar uzun sorguyu çalıştırır.

Sorgu, ilk, kayıtlar farklı uzunlukta olabilir, ve, ikinci, silinen kayıtlar arasında boşluklar olabilir çünkü OFFSET doğru gidin. Kontrol edin ve her bir kayıt sayısı var.

id MyISAM tablo PRIMARY KEY olduğunu varsayarsak, bu hile kullanarak hızlı olur:

SELECT  t.*
FROM    (
        SELECT  id
        FROM    mytable
        ORDER BY
                id
        LIMIT 10000, 30
        ) q
JOIN    mytable t
ON      t.id = q.id

Bu makaleye bakın:

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cole Rolland

    Cole Rolland

    23 Kasım 2008
  • magnum33563

    magnum33563

    8 NİSAN 2011
  • Mary Jane Tauyan

    Mary Jane Ta

    20 AĞUSTOS 2009