Czy są jakieś różnice w wydajności między używaniem jawnie utworzyć instrukcję tabela i ładowanie danych a wybór w. Ten przykład pokazuje tylko 2 kolumny, ale pytanie jest ukierunkowane na używanie bardzo dużych tabel. W poniższym przykładzie wykorzystano również tabele tymczasowe, ale zastanawiam się również nad skutkami używania zwykłych tabel. Myślę, że byłyby takie same niezależnie od typu stołu.Tworzenie tabeli przy użyciu jawnie utworzyć instrukcję tabeli i wybrać w
Temp scenariusz tabela:
--- Explicitly creating temp table first and then loading.
create table #test1 (id int, name varchar(100))
insert into #test1 (id, name) select id, name from #bigTable
--- Creating temp table by selecting into.
select id,name into #test2 from #bigTable
lub regularne stoły:
--- Explicitly creating table first and then loading.
create table test1 (id int, name varchar(100))
insert into test1 (id, name) select id, name from #bigTable
--- Creating table by selecting into.
select id,name into test2 from bigTable
Jakie są każdego z nas myśli o tym? Myślę, że jawne tworzenie tabeli i ładowanie musi mieć lepszą wydajność, niż wybór w selekcji w musi ocenić wyrażenia w instrukcji w celu utworzenia tabeli.
Nasza organizacja zazwyczaj tworzy tabele tymczasowe jako standardową praktykę i zastanawiamy się, co według mnie jest najlepszą praktyką.
http://msdn.microsoft.com/en-us/library/ms188029.aspx
Nie mam czasu na sprawdzenie, ale może się okazać, że jest to przyczyną ponownej kompilacji. Niezależnie od tego, czy ten potencjalny narzut jest większy niż inne korzyści sugerowane przez Adama Houldswortha, zostawię to Tobie lub innym, aby się przekonać :) – MatBailie
Czy sprawdziłeś plany wykonania obu wariantów? Czy właściwie je ustaliłeś, by sprawdzić, czy istnieje mierzalna różnica? – HLGEM
Próbowałem już wcześniej, ale nie na dużym zestawie danych. Nie próbuję rozwiązać problemu z wydajnością w tej chwili, jestem ciekawy co do zalet/wad każdej metody robienia wstawki ... – mservidio