我这样做,接收供应商和品牌标识的列表的搜索引擎。它们以字符串形式出现,并被转换为UDF表格。每个品牌都有一个供应商ID。更有效的方式,以避免受骗者
所以为了限制由由我需要填写这些值的临时表,然后他们在一起,我的搜索结果的用户选择的品牌和供应商我的搜索。现在用户可以选择整个供应商进行搜索,但之后选择另一个不同供应商的品牌。这必须是一个订单的情况,所以除了填充供应商列表iwth供应商ID的传入的参数,我还必须抓住从他们在传递品牌供应商的ID并加载它们也。
有一堆的授权码也,我已经剥离出来,但是这基本上是我在做什么。
INSERT INTO #TempBrandList (Brand_ID, Brand_Owner)
SELECT gID, brands.brandowner FROM dbo.f_ConvertGuidList_to_Table(@brandList) JOIN brands ON TempBrandList.Brand_ID=brands.brandid
INSERT INTO #TempSupplierList (Supplier_ID)
SELECT gID FROM dbo.f_ConvertGuidList_to_Table(@supplierList)
INSERT INTO #TempSupplierList (Supplier_ID)
SELECT DISTINCT Brand_Owner FROM #TempBrandList WHERE Brand_OWNER NOT IN (SELECT Supplier_ID FROM #TempSupplierList)
我很担心NOT IN会导致问题,效率不高。是否最好有2个#temp表,只需要直接插入,然后再插入另一个DISTINCT插入第二个,将第二个插入我的主搜索代码以限制结果?
我不会担心性能问题,直到你确实有一个。不在IN是非常有效的。 – Paparazzi