代码之家  ›  专栏  ›  技术社区  ›  tgandrews

最佳代码-一个大查询但更复杂的数据检索或许多小查询

  •  0
  • tgandrews  · 技术社区  · 16 年前

    select data from table where name = 'blah'
    

    select name, data from table where name in ('blah','blah2','blah3')
    

    select name, data from table where name like 'blah%'
    

    7 回复  |  直到 16 年前
        1
  •  2
  •   KB22    16 年前

    我会答应一个粗重的请求。至少从性能的角度来看,这是更好的方法。

        2
  •  2
  •   Adriaan Stander    16 年前

    一次DB之旅比多次小点击更有效率。

        3
  •  2
  •   teabot    16 年前

    我希望使用单个语句可以产生更好的性能,并且可以减少与语句准备、提交和执行相关的开销。然而,与任何优化一样,你应该在承诺之前尝试并衡量它。

    您可能还想考虑准备和提交一批报表,而不是单独提出请求。此外,对于第一种情况,请检查您是否准备了一次语句并缓存了准备好的语句,从而节省了重复编译语句的开销。

        4
  •  2
  •   Konamiman    16 年前

    也就是说,这是一种需要分析来实际衡量所做任何更改的改进的问题。

        5
  •  1
  •   Anthony Faull    16 年前

    参数化查询既快速又安全。它缓存查询计划并防止 SQL injection .

    SELECT name, data
    FROM table
    WHERE name in (@name1, @name2, @name3)
    

    var command = connection.CreateCommand();
    command.CommandText = "SELECT name, data FROM table WHERE name in (";
    int index = 0;
    string separator = "";
    foreach (string value in valueList)
    {
       string paramName = "@p" + Convert.ToString(index);
       command.CommandText += separator + paramName;
       command.Parameters.Add(paramName, value);
       separator = ", ";
       index++;
    }
    command.CommandText += ")";
    
        6
  •  0
  •   davek    16 年前

    我会去做一次手术

    select data from table... etc.etc.
    

    通过存储过程:这将允许您修补SQL逻辑(可能的优化),而无需更改前端代码中的任何内容。

        7
  •  0
  •   Lee Conroy    16 年前