2009-04-21 19 views
6

próbuję zdecydować pomiędzy dwoma możliwymi wdrożeń i jestem chętny, aby wybrać najlepszy :)Wydajność narzut dodanie pola BLOB do tabeli

muszę dodać opcjonalny pola BLOB do tabeli, która obecnie tylko ma 3 proste pola. Przewiduje się, że nowe pole będzie używane w mniej niż 10%, a może nawet w mniej niż 5% przypadków, więc dla większości wierszy będzie to wartość pusta - w rzeczywistości większość naszych klientów prawdopodobnie nigdy nie będzie miała tam żadnych danych BLOB.

Pierwsza skłonność kolegi polegała na dodaniu nowej tabeli do przechowywania tylko BLOB-ów, z (zerowym) kluczem obcym w pierwszej tabeli. Przewiduje, że będzie to miało zalety związane z wydajnością podczas odpytywania pierwszej tabeli.

Myślałem, że jest bardziej logiczne i łatwiej przechowywać BLOB bezpośrednio w oryginalnym stole. Żadne z naszych zapytań nie ma wartości z tego stołu, więc intuicja jest taka, że ​​przechowywanie jej bezpośrednio nie będzie miało znacznego wpływu na wydajność.

Mam zamiar porównać oba wybory, ale miałem nadzieję, że niektórzy guru SQL mają jakąkolwiek radę z doświadczenia.

Korzystanie z MSSQL i Oracle.

Odpowiedz

5

Dla MSSQL, obiekty typu blob będą przechowywane na oddzielnej stronie w bazie danych, więc nie powinny wpływać na wydajność, jeśli kolumna jest pusta.

Jeśli korzystasz z typu danych OBRAZ, dane są zawsze przechowywane poza rzędem. Jeśli używasz typu danych varbinary (max), to jeśli dane są> 8kb, jest on przechowywany poza wierszem, w przeciwnym razie może być przechowywany w wierszu w zależności od opcji tabeli.

Jeśli masz tylko kilka wierszy z obiektami typu blob, wydajność nie powinna zostać zmieniona.

Powiązane problemy