我最近注意到的一些事情是使用IN的人似乎不合适.我觉得我错过了一个技巧 - 也许有速度提升或什么?
这个查询:
SELECT * FROM pages WHERE is_visible IN ($visibility)
Run Code Online (Sandbox Code Playgroud)
为什么要用它?为什么不:
SELECT * FROM pages WHERE is_visible = $visibility
Run Code Online (Sandbox Code Playgroud)
当然,如果是这样的话:
SELECT * FROM pages WHERE is_visible
IN ($visibility,$invisibility,$somethingelse)
Run Code Online (Sandbox Code Playgroud)
那么WHERE x IN (1,2,3)是一个更好的选择WHERE x = 1 OR x = 2 OR x = 3,对吗?但肯定这是你应该使用IN 的唯一场景吗?
无论如何,谢谢你的时间 - 我期待你的回复!
那么
WHERE x IN (1,2,3)是一个更好的选择WHERE x = 1 OR x = 2 OR x = 3,对吗?但肯定这是你应该使用的唯一场景IN吗?
不,您也可以使用IN和子查询.
...其中的字段(从another_table中选择字段)
也许动态生成$ visibility,如下所示:
$visibility = implode(', ', array_map('intval', array(1, 2, 3)));
Run Code Online (Sandbox Code Playgroud)
数组(1,2,3)可能来自不受信任的来源.
这里没有提高性能的技巧,但我认为也不会对性能造成任何影响。所以两种方式都可以。我同意你的观点,使用只有一个参数的 IN 子句看起来很有趣,但它仍然很容易理解。
我认为这种情况可能会发生,因为开发人员认为将来可能允许多个值(这样查询就不会改变)。或者可能开发人员已经习惯了可能有多个值的场景,他们只是出于习惯而这样写。
| 归档时间: |
|
| 查看次数: |
1480 次 |
| 最近记录: |