我有一个庞大的会员数据库。我们说我有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是一种不专业的方式而且速度慢,是否有更好的方法?
答案 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