【发布时间】:2012-08-18 01:17:05
【问题描述】:
我有一个简单的SELECT 语句,在WHERE 子句中引用了几列。通常我在 VB 代码中执行这些简单的操作(设置命令对象,将命令类型设置为文本,将命令文本设置为 Select 语句)。但是我看到了超时问题。我们已经对我们的表格等进行了优化。
我想知道是否会因为我以这种方式进行查询而对性能造成很大影响,而不是使用几个参数创建一个简单的存储过程。我在想也许内联代码会强制 SQL 进行额外的编译、创建查询计划等工作,如果我使用存储过程就不会发生这种情况。
实际运行的 SQL 示例:
SELECT TOP 1 * FROM MyTable WHERE Field1 = @Field1 ORDER BY ID DESC
【问题讨论】:
-
发布代码将有助于回答问题。
-
无论你做什么,在你的sql中使用参数!真正检查性能瓶颈的唯一方法是分析您的查询,但从参数化 sql 开始,无论是通过内联 sql 还是存储过程,都是一个好的开始。
-
SELECT TOP 1 * FROM MyTable WHERE Field1 = @Field1 ORDER BY ID DESC(ID 是身份种子第一列)
-
执行计划是什么样的?
Field1是否已编入索引?您是否会遇到并发数据修改语句的阻塞?
标签: sql-server performance tsql optimization