我需要选择多个记录
我用
SELECT *
FROM `table`
WHERE `ID` =5623
   OR `ID` =5625
   OR `ID` =5628
   OR `ID` =5621
此查询在每秒第二次运行php运行4次
这有更好更快的方法吗?
ant*_*res 57
SELECT *
FROM `table`
where ID in (5263, 5625, 5628, 5621) 
可能更好,但不是更快.
SELECT *
FROM `table`
WHERE `ID` in (5623, 5625, 5628, 5621)
在进一步研究时,我发现了一篇有趣的博客文章,它解释了如何使用集合从 In 子句中获得更快的 SQL 性能,方法是将 id 列表创建到公共表表达式 (CTE) 中,然后加入它。
因此,您可以编写与以下等效的 PHP 代码以获得最佳性能。
DECLARE  @idList varchar(256) 
SET @idList = '5623, 5625, 5628, 5621'
;with ids (id) as
(
    SELECT value FROM UTILfn_Split(@idList,',')
)
SELECT     t.* 
FROM     table as t
INNER JOIN    ids
ON        t.ID = ids.id
除了人们所说的内容(其中id):
1)iF有很多ID,最好将它们粘贴到临时表中并运行与临时表的连接
2)确保你的表有id的索引
3)如果数据的实时性不重要,请将查询结果放在应用程序端的缓存中
| 归档时间: | 
 | 
| 查看次数: | 34238 次 | 
| 最近记录: |