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

  • OnlyFunClips

    OnlyFunClips

    16 ŞUBAT 2012
  • The White House

    The White Ho

    21 Ocak 2006
  • TheDigiCraft

    TheDigiCraft

    25 NİSAN 2011