mssql/php-在内存表中通过resultset循环并高效执行新查询?

mssql/php-在内存表中通过resultset循环并高效执行新查询?,php,sql-server,in-memory,Php,Sql Server,In Memory,我是MSSQL的新手,从来没有在内存表中使用过,也不能100%确定这是否是我所需要的 我有一个查询的结果集(不能修改),我循环并显示每一行数据。对于结果集的一个字段,我需要执行查询以获取该字段的相关显示数据。问题是,根据结果集中的行数,我可能必须在循环中调用此查询1000次 有人能就如何有效地做到这一点提出建议吗?我听说过内存表,不知道这是否是我需要的?如果是,我从哪里开始?或者我只是简单地存储在一个数组中还是什么 非常感谢您的建议 Declare @Test_Memory_Table Tabl

我是MSSQL的新手,从来没有在内存表中使用过,也不能100%确定这是否是我所需要的

我有一个查询的结果集(不能修改),我循环并显示每一行数据。对于结果集的一个字段,我需要执行查询以获取该字段的相关显示数据。问题是,根据结果集中的行数,我可能必须在循环中调用此查询1000次

有人能就如何有效地做到这一点提出建议吗?我听说过内存表,不知道这是否是我需要的?如果是,我从哪里开始?或者我只是简单地存储在一个数组中还是什么

非常感谢您的建议

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中测试查询并查看计划,看看返回内存表查询与直接查询表需要多长时间。请记住,由于SSM中默认的提示(例如arithabort),SSM可能比生产更快,但在通过.net客户端进行查询时可能不会设置为这种方式。如果你的桌子很小,我希望差别不大

谢谢你的回答,不过,我对此有点困惑。我是否要用我自己的select查询替换您的查询?我想底线是,我真的不知道在哪里使用表变量/临时表,或者这比在结果集中直接调用查询更好。我试图寻找场景,但找不到任何东西,因此不确定这是否是我应该使用的东西,如果是,我如何实现这一点?