mySQL - 有没有更好的方法在查询中使用许多OR oparators?

时间:2016-09-11 12:33:11

标签: php mysql sql

我有一个庞大的会员数据库。我们说我有10个名字。 我需要取这些会员'最后一次以最快的方式从成员表中看到的值。我试过了

SELECT lastseen FROM members WHERE 
name='Pierce' OR 
name='John' OR 
name='Steven' OR 
name='James' OR 
name='Ernie' OR 
name='Stuart' OR
name='Blake' OR
name='Shaun' OR
name='Pat' OR
name='Lola'

但是在查询中使用许多OR oparators是一种不专业的方式而且速度慢,是否有更好的方法?

2 个答案:

答案 0 :(得分:8)

使用@RequestMapping(value = "/add/mac",method = RequestMethod.POST, produces = "application/json") public @ResponseBody Object addMac(@RequestBody AddBatchObject addBatchObject, HttpServletRequest request) throws AuthenticationException{ LoggerUtils.getLogger().info("addMac"); return AdminAddMac.adminAddMac(addBatchObject,request); }

IN

在MySQL中,使用SELECT lastseen FROM members WHERE name IN ('Pierce', 'John', . . . ) 代替IN甚至可以获得性能优势。 MySQL将创建一个二叉树来搜索值(假设它们是常量),这加速了处理。

答案 1 :(得分:2)

使用SQL IN关键字:

SELECT lastseen FROM members WHERE 
name IN ('Pierce', 'John', 'Steven', ...);

使用PHP时,不要忘记使用预准备语句和绑定参数。见https://secure.php.net/manual/en/pdo.prepare.php