1

简单介绍一下:

我有一个表t1( id(mediumint), string(varchar(45) )都属于主键。

我需要在这个表中找到 5 个字符串,比如说。而这张表就像 5M + 行。

什么会更快?

  1. 一个查询使用IN()

    SELECT id, string FROM t1 WHERE string IN (value1,value2,...,value5)
    

    或者

  2. 五个查询,每个值一个:

    SELECT id, string FROM t1 WHERE string = value1
    SELECT id, string FROM t1 WHERE string = value2
    '
    '
    SELECT id, string FROM t1 WHERE string = value5
    

应用程序服务器和数据库服务器将在同一个网络上(100Mbit 或 1Gbit,尚不确定),而不是在同一台机器上。

4

3 回答 3

5

大多数情况下,使用单个查询可能比使用多个查询更快,因为它避免了解析、发送查询和接收多个单独响应的开销,并且允许更好的优化。如有疑问,请提供个人资料。

还要记住查询的长度。大多数数据库服务器对查询字符串的长度都有限制。因此,如果您有很长的值列表,您应该分批发送它们。

于 2012-08-15T21:54:38.030 回答
2

使用 IN() 的一个查询应该更快。确保您有一个以“字符串”作为第一列的索引。

于 2012-08-15T21:51:58.200 回答
1

只有当您在查询中需要复杂且可能有多个 JOIN 时,才会有多个查询更快、更高效,而不是从单独的表中获取单独的结果并将它们 JOIN 到应用程序的内存中。主要作为一种节省传输时间/带宽的方式。
最好每隔一次运行单个查询。

于 2012-08-15T21:56:02.487 回答