Mysql'de sorgu içinde sorgu işlemi
Çoğumuz PHP veya javascript gibi dillerde bir MySQL sorgusunu for içine alıp döndürdükçe döndürüyoruz.
Peki verimliliğin tartışıldığı şu esnada çözüm olarak nasıl bir MySQL sorgusu yazabilirdiniz;
Tablomda kullanıcılar için hazırladığım örnek bir "userKey" yapısı aşağıdaki tabloda var;
Uye | userKey |
---|---|
Üye 1 | mT_0FrncAGLQM-V2QaDnc8m_SZ3OX92bHvRS |
Üye 2 | 5d3SOYwxa9-YYCS5FRZaQOGm6xh62T8phFyML |
Buradan da anlaşılıyor ki tüm userKey'ler random halde gelmekte...
Küçük bir soru da burada yapıştırayım: PHP'de Random diye bir şey var mıdır??? (10:27)
Konu bazımız için önemli olabilir
Gelelim asıl soruya:
SELECT
id, userKey,
FROM
users
WHERE
userKey = '....herhangi bir sıradaki randomKey....'
ORDER BY
id
LIMIT
(buraya bir sorgu gelecek ve aynı tablodan dönen ID değeri x olsun),
x+50
Ben bu şekilde random key üzerinden ilerlerdiğim yapıda LIMIT kısmının başlangıç ID'sini MySQL içinde bana döndürecek, ben de o ID'ye sahip değeri x diye atanan yere atayıp belli bir alandaki datayı çekebileceğim gibi düşünün...
Mantığı belki basittir fakat benim kurgulayamadığım bir gerçek. 😅
Yardımcı olursanız sevinirim.
SET @usrKey = 'mT_0FrncAGLQM-V2QaDnc8m_SZ3OX92bHvRS';
SELECT
*
FROM
users,
(SELECT
usr.id AS userID,
usr.userKey
FROM
users AS usr
WHERE
usr.userKey = @usrKey
) AS userID_
WHERE
id > userID_.userID
ORDER BY
id
LIMIT
15
gibi bir çözüm buldum. Deneyen bir arkadaş olursa belki denk gelir çözer. Farklı çözümler aklınıza gelirse yazabilirsiniz. Kolay gelsin.