0
CONCAT(me.nativeName,tp.nativeName) NOT IN (SELECT CONCAT(e_node,e_n_t)
FROM m_tp_info
WHERE m_id = mid)
この連結を最適化する手段はありますか?ほとんどのDBMSでConcat最適化
CONCAT(me.nativeName,tp.nativeName) NOT IN (SELECT CONCAT(e_node,e_n_t)
FROM m_tp_info
WHERE m_id = mid)
この連結を最適化する手段はありますか?ほとんどのDBMSでConcat最適化
私は意味的に作る方法でこれに近づくだろう意味:もちろん
SELECT ...
FROM ...
LEFT JOIN m_tp_info AS i
ON i.mid = me.m_id
AND CONCAT(i.e_node, i.e_n_t) = CONCAT(me.nativeName,tp.nativeName)
WHERE i.mid IS NULL;
をあなたがた場合、:あなたが試みる場合がありますので
SELECT ...
FROM ...
WHERE NOT EXISTS
( SELECT 1
FROM m_tp_info AS i
WHERE i.mid = me.m_id
AND CONCAT(i.e_node, i.e_n_t) = CONCAT(me.nativeName,tp.nativeName)
)
しかし、MySQLは通常、LEFT JOIN/IS NULL
better than NOT IN
or NOT EXISTS
を最適化します2つの列を比較し、NOT IN
がこれを許可しないため、
CONCAT
を使用しています
SELECT ...
FROM ...
LEFT JOIN m_tp_info AS i
ON i.mid = me.m_id
AND i.e_node = me.nativeName
AND i.e_n_t = tp.nativeName
WHERE i.mid IS NULL;
または
SELECT ...
FROM ...
WHERE NOT EXISTS
( SELECT 1
FROM m_tp_info AS i
WHERE i.mid = me.m_id
AND i.e_node = me.nativeName
AND i.e_n_t = tp.nativeName
);
はい、代わりconcated値の別々の列を比較します。 (おそらく、存在しないのは、null-safeであることです。) – jarlh
@jarlhこれは、コンポーネントの部分が等しいとみなします。 'CONCAT( 'ABC'、 'DEF')= CONCAT( 'AB'、 'CDEF')'のようになりますが、2つの部分は等しくありません。 Niranjan、これが起こるかどうか確認できますか? – GarethD
は、OPが何を望んでいるかに応じて、完全なクエリ – RomanPerekhrest