Bu Mysql sorgu tarihi daha iyi yazmak için nasıl

0 Cevap php

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

0 Cevap