MySQL多个查询或使用IN(value1,value2,value3)

Jak*_*ong 1 mysql performance

简短介绍:

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

我需要在这个表中找到5个字符串,比方说.这个表就像5M +行.

什么会更快?

  1. 一个查询使用IN():

    SELECT id, string FROM t1 WHERE string IN (value1,value2,...,value5)
    
    Run Code Online (Sandbox Code Playgroud)

    要么

  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
    
    Run Code Online (Sandbox Code Playgroud)

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

rid*_*rid 5

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

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