Hangi ifade tercih edilir? Ne yaptığına bağlı.
Başka performans etkileri var mı? Tablo kalıcı bir tablo ise, tablo oluşturma sırasında hem olumsuz hem de pozitif performans üzerinde etkileri olan dizinler oluşturabilirsiniz. İçine seç, geçerli tablolarda bulunan dizinleri yeniden oluşturmaz ve bu nedenle tablonun sonraki kullanımı olması gerekenden daha yavaş olabilir.
SELECT ... INTO over INSERT INTO ... için iyi bir kullanım örneği nedir? Tablo yapısını önceden bilmiyorsanız, içine seçim kullanılır. Yazmak, tablo ve insert deyimi oluşturmaktan daha hızlıdır, bu nedenle zaman zaman gelişmeyi hızlandırmak için kullanılır. Bir şeyleri test etmek için hızlı bir geçici tablo oluştururken veya belirli bir sorgunun yedek tablosunu (belki sileceğiniz kayıtlar) kullanmak genellikle daha hızlıdır. Birden çok kez (geçici tablolar dışında) çalışacak olan üretim kodunda kullanıldığını görmek nadirdir çünkü tablo zaten mevcutsa başarısız olacaktır.
Bazen ne yaptıklarını bilmeyen insanlar tarafından uygunsuz bir şekilde kullanılır. Ve sonuç olarak veri tabanında hasara neden olabilirler. Bir atılabilir tablo dışında herhangi bir şey için SELECT INTO kullanmanın uygun olmadığını düşünüyorum (geçici bir yedekleme, depolanan işlemin sonunda kaybolacak geçici bir tablo, vb.). Kalıcı tablolar , tasarımları konusunda gerçek düşünceye ihtiyaç duyarlar ve SELECT INTO, hangi sütunlar ve hangi veri türleri gibi temel şeyler hakkında düşünmekten kaçınmayı kolaylaştırır.
Genel olarak, create table ve insert deyiminin kullanılmasını tercih ederim - daha fazla kontrole sahipsiniz ve tekrarlanabilir işlemler için daha iyi. Ayrıca, tablo kalıcı bir tablo ise, ayrı bir oluşturma tablosu komut dosyasından (kaynak kontrolünde olan) oluşturulmalıdır, çünkü kalıcı nesneler oluşturma genel olarak kodda eklemeler / silmeler / güncellemeler veya bir tablo. Nesne değişiklikleri, veri değişikliklerinden ayrı olarak ele alınmalıdır çünkü nesneler, belirli bir ekleme / güncelleme / seçme / silme gereksinimlerinin ötesinde etkilere sahiptir. En iyi veri türlerini göz önünde bulundurmanız, FK kısıtlamaları, PK'ler ve diğer kısıtlamalar hakkında düşünmeniz, denetim gereksinimlerini göz önünde bulundurmanız, indekslemeyi düşünmeniz vb.
INSERT INTO
dünyanın sıradan bir SQL ifadesi olmadığını bilmesini sağlayan iki anahtar kelimeye (seç ve içeri) sahiptirSELECT ... INTO
. İlkini tercih etmek için küçük bir neden.