最佳做法,其中=?,在准备好的语句中的(?)子句中?

Jam*_*hon 3 sql database performance prepared-statement

使用带有一个问号的“准备好的陈述”五十次,或者使用带有五十个问号的“准备好的陈述”,性能更高?

本质上Where Person = ?还是Where Person IN (?, ?, ?, ...)更好?

假设您有一个带有列,国家/地区的表,然后有几个关系表,您具有该国家/地区的人口。

在列出1000个国家/地区的名单后,获得人口增长的最佳方法是什么?

请记住,这是一个假设的示例,Wikipedia将国家/地区的数量设为223,让我们假设此示例的数量要大得多。

  1. 创建一个接受国家/地区参数并返回人口的语句。例:Where Country = ?

  2. 动态创建一个Prepared Statement,添加?针对每个国家/地区使用Where in (?,?,etc)条款。例:Where Country = (?, ?, ...)

  3. 像在选项一中那样创建一个简单的语句,但是遍历并为每个国家重复使用一个参数“预备语句”。

最好的方法是什么?

Jam*_*hon 5

我可以用一些真实数据进行测试,从而达到了项目的目的。

根据1435个项目,选项1约需8分钟,选项2约需15秒,选项3需约3分钟。

在性能方面,选项2是明显的赢家。编码起来有点困难,但是性能差异太大,无法忽略。

我知道来回访问数据库是瓶颈,尽管我确信此处列出的结果会根据网络,数据库引擎,数据库机器规格和其他环境因素而有所不同。