【发布时间】:2017-08-09 13:27:12
【问题描述】:
我写了一个程序,需要几个外键ID来做进一步的操作
表md_machines
+----+-------+
| id | name |
+----+-------+
| 1 | c432 |
| 2 | c431 |
| n | ... |
+----+-------+
我在我的程序中的查询:
SELECT TOP 1
@m1 = m1.id,
@m2 = m2.id,
@m3 = m3.id,
@m4 = m4.id
FROM md_machines
OUTER APPLY(SELECT TOP 1 id FROM md_machines WHERE name = @p1) m1
OUTER APPLY(SELECT TOP 1 id FROM md_machines WHERE name = @p2) m2
OUTER APPLY(SELECT TOP 1 id FROM md_machines WHERE name = @p3) m3
OUTER APPLY(SELECT TOP 1 id FROM md_machines WHERE name = @p4) m4
一切正常,但md_machines 有超过 300k 行。当我用空表替换 FROM md_machines 时,这个查询大约快 10%。
我怎样才能避免FROM md_machines?对我来说没有必要。
【问题讨论】:
标签: sql sql-server performance optimization