Ben birden fazla kayıt seçmek gerekir
Ben kullanmak
SELECT *
FROM `table`
WHERE `ID` =5623
OR `ID` =5625
OR `ID` =5628
OR `ID` =5621
Bu sorgu her saniye katiyen php 4 kez çalıştırmak
Bu daha iyi ve daha hızlı bir yolu var mı?
Insanlar (where id in) belirtilen ne üstüne:
Kimlikleri bir yeri vardır iF 1), daha iyi bir geçici tabloya onları sopa ve bir o geçici tablo ile katılmak çalıştırmak için
2) masa kimliği üzerinde bir dizin olduğundan emin olun
3) verilerin gerçek zamanlama kritik değilse, uygulama tarafında bir önbellekte sorgu sonuçlarını koymak
SELECT *
FROM `table`
WHERE `ID` in (5623, 5625, 5628, 5621)
Bu araştırma sırasında ayrıca bir ortak tablo ifade (CTE) içine kimlikleri listesi oluşturma ve üzerinde katılarak, Madde In den daha hızlı SQL performansı almak için bir dizi nasıl kullanılacağını açıklıyor post ilginç bir blog geldi söyledi.
Yani maksimum performans elde etmek için aşağıdakilerden PHP eşdeğer kod olabilir.
DECLARE @idList varchar(256)
SET @idList = '5623, 5625, 5628, 5621'
;with ids (id) as
(
SELECT value FROM UTILfn_Split(@idList,',')
)
SELECT t.*
FROM table as t
INNER JOIN ids
ON t.ID = ids.id
Eğer yaparsanız
SELECT *
FROM `table`
WHERE `ID` IN (5623, 5625, 5628, 5621)
Bu sürece kimlikleri sayısı çok büyük alamadım gibi, ince olmalıdır. Ben kimlikleri için bir dizin oluşturabilirsiniz öneririm, böylece sorgu daha hızlı gerçekleştirir.
Ayrıca, mantığı değiştirmeden düşünün, böylece bu çok kimlikleri geçmek zorunda değilsiniz