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