我对 MSSQL 相当陌生,从未使用过内存表,也不能 100% 确定这是否是我需要的。
我有一个查询结果集(无法修改),我循环显示每一行数据。对于结果集中的一个字段,我需要执行查询以获取该字段的相关显示数据。问题是我可能不得不在循环中调用这个查询 1000 次,具体取决于结果集中有多少行。
谁能建议有效地做到这一点的方法?我听说过 In Memory 表,想知道这是否是我需要的?如果是这样,我从哪里开始?或者我只是存储在一个数组或其他东西中?
非常感谢任何建议。
我对 MSSQL 相当陌生,从未使用过内存表,也不能 100% 确定这是否是我需要的。
我有一个查询结果集(无法修改),我循环显示每一行数据。对于结果集中的一个字段,我需要执行查询以获取该字段的相关显示数据。问题是我可能不得不在循环中调用这个查询 1000 次,具体取决于结果集中有多少行。
谁能建议有效地做到这一点的方法?我听说过 In Memory 表,想知道这是否是我需要的?如果是这样,我从哪里开始?或者我只是存储在一个数组或其他东西中?
非常感谢任何建议。
Declare @Test_Memory_Table Table
(
/* Fields needed for lookup; use same datatypes as schema */
IndexOrPkFieldName Numeric(19,0),
Field1 varchar(255),
Field2 date
)
Insert into @Test_Memory_Table Select t2.Field1 as field1, t1.field2 as Field2, CONVERT(char(10),t3.Field3, 101) as Field3
From Table1 t1
INNER JOIN Table2 t2 on t1.pkId = t2.pkId and isnull(t2.IS_ACTIVE,0) = 1 and ISNULL(t2.TYPE, 0) > 0
INNER JOIN Table3 t3 on t2.pkId = t3.pkId
select * from @Test_Memory_Table
只需在 SSMS 中测试查询并查看计划,看看返回内存表查询与直接查询表需要多长时间。请记住,由于 ssms 中的默认提示(例如 arithabort),ssms 可能比生产更快,但在通过 .net 客户端查询时可能不会以这种方式设置。如果您的桌子很小,我希望差异很小。