0
假設我有10個表(Table1
- Table10
)和每個表中的10列(可以說是Column1
- Column10
) - 表中的列名相同。我想查找所有表中至少有一行爲not NULL
的所有列,並將它們插入臨時表中,例如@usedColumns
,稍後將在存儲過程中使用它們。如何獲取從各種表中使用的所有列?
假設您在任何或所有這些表中有數百萬條記錄,最快和最有效的方法是什麼?當前的實現使用UNPIVOT
,但我試圖重新設計該存儲過程,因爲它的行爲非常緩慢。或者是UNPIVOT
真的是最有效的方法嗎?我在想
一種方法是隻檢查if exists
,但無法弄清楚如何把這個變成一個有效的循環:
if exists (select top 1 1
from Table1
where Column1 is not null)
insert into @usedColumns (table_name, column_name)
values ('Table1', 'Column1' );
if exists (select top 1 1
from Table1
where Column2 is not null)
insert into @usedColumns (table_name, column_name)
values ('Table1', 'Column2' );
...
的DB的問題是SQL Server中,但我猜測該解決方案可以在MySQL和其他平臺上運行。
我知道在MySQL中做這件事的唯一方法是使用'INFORMATION_SCHEMA'.'COLUMNS'和PREPARE-ing構造的查詢。 – Uueerdo