這是一個很好的替代LEFT OUTER JOIN,性能明智嗎?這是最好的嗎?SQL替代左外部連接
SELECT a.PRODUCT_ID
,a.PROD_NAME
,a.PRODUCTTYPE_ID
,a.SUPPLIER_ID
,t.PRODTYPE_NAME
,s."NAME" SUPPLIER_NAME
FROM PRODUCT a
INNER JOIN (
SELECT NULL PRODUCTTYPE_ID
,NULL PRODTYPE_NAME
FROM rdb$database
UNION ALL
SELECT PRODUCTTYPE_ID
,PRODTYPE_NAME
FROM PRODUCTTYPE
) t
ON (t.PRODUCTTYPE_ID = a.PRODUCTTYPE_ID) OR (t.PRODUCTTYPE_ID IS NULL AND a.PRODUCTTYPE_ID IS NULL)
INNER JOIN (
SELECT NULL SUPPLIER_ID
,NULL "NAME"
FROM rdb$database
UNION ALL
SELECT SUPPLIER_ID
,"NAME"
FROM SUPPLIER
) s
ON (s.SUPPLIER_ID = a.SUPPLIER_ID) OR (s.SUPPLIER_ID IS NULL AND a.SUPPLIER_ID IS NULL)
指數上PRODUCT_ID,PRODUCTTYPE_ID,SUPPLIER_ID表產品和它們各自的表憑藉主鍵和外鍵的
你可以發佈利用左外連接的替代查詢嗎?您是否嘗試過運行任何性能計時或查看查詢的執行計劃? – Aron
爲什麼你需要一個好的舊'左連接'的替代品?你有什麼樣的性能問題?你有理由相信「左連接」是原因嗎? – Blorgbeard
鍵並不總是創建索引(取決於諸如dbms等之類的東西),並且它們創建的任何索引可能對您正在執行的查詢都不利。工會通常不是一個好的選擇。需要更多地瞭解您遇到的問題。不過,我更熟悉SQL Server。 – Nikki9696