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

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • ETrade Supply

    ETrade Suppl

    23 Temmuz 2011
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013