Ben sonraki tablolar var
Kullanıcılar {id, name}
Mesajlar {id, user_id, cache_user_name}
İstediğim şey yapmak için bir JOIN sadece cache_user_name NULL performans nedenleriyle içindir.
Örneğin:
SELECT Mesajlar.*, Kullanıcılar.name FROM Mesajlar INNER JOIN Kullanıcılar ON (Mesajlar.user_id = Kullanıcılar.id)
// ON (ISNULL(Mesajlar.cache_user_name) AND ...
En iyi yolu, 2 sorguları yapıyor? Önbellek (birleştirme) ve bir birleşim ile önbelleğe alınmış satırlar için diğer olmadan satırlar için 1?
[EDIT]
Ben ihtiyacım sonucu:
Kullanıcılar
ID: 1, NAME: Wiliam
Mesajlar
ID: 1, USER_ID: 1, CACHE_USER_NAME: Wiliam
ID: 2, USER_ID: 1, CACHE_USER_NAME: null
Sonuç
ID: 1, USER_ID: 1, CACHE_USER_NAME: Wiliam, USERS.NAME: null // No join, faster
ID: 2, USER_ID: 1, CACHE_USER_NAME: null, USERS.NAME: Wiliam // Join