2
即時通訊使用mysql並想知道它的語法。子句中的mysql語法
我要讓IN子句是這樣的:
from_id OR to_id IN (
)
只是我不知道語法是如何
我希望避免在第運行兩次這樣的:
from_id IN (
)
OR
to_id IN (
)
最好的問候 亞歷山大
即時通訊使用mysql並想知道它的語法。子句中的mysql語法
我要讓IN子句是這樣的:
from_id OR to_id IN (
)
只是我不知道語法是如何
我希望避免在第運行兩次這樣的:
from_id IN (
)
OR
to_id IN (
)
最好的問候 亞歷山大
如果您有一些原因需要擔心IN子句運行兩次(例如,如果子查詢特別複雜且優化程序似乎沒有利用緩存結果集),則您始終可以替換帶INNER JOIN的IN子句。
所以這樣的:
FROM x
WHERE from_id IN (
subquery
)
OR
to_id IN (
subquery
)
變成這樣:
FROM x
INNER JOIN (
subquery
) y ON y.value IN (x.from_id, x.to_id)
你不能做那。只有第二種形式是有效的。
作爲@ judda提到,不要擔心過早優化。查詢優化器將盡可能利用緩存。
在大多數情況下,你並不真正需要擔心「條款運行兩次」這樣的,因爲大多數DBMS的緩存數據/使用時暫時保存它,因此它不一定是「努力的兩倍」。 – judda 2011-04-26 04:07:36