Witam,
potrzebuję załadować do bazy SQL ( Express 2008 ) kilkanaście mln rekordów
- ładowanie poprzez mechanizm DTS z tabel excelowych ,
moje pytanie : jak skonfigurować tabele w bazie SQL ( typy danych lub coś, o czym jeszcze nie wiem J )
aby zapewnić najlepsze działanie ( szybkość odczytu danych , zajmowana przestrzeń dyskowa , zużycie pamięci operacyjnej itd )
z tej bazy będą robione tylko odczyty
dane jakie się tam znajdą to - przykładowo :
kolumna1:
'123123131' 9- ( maksymalnie ) znakowe ID - to czy to będzie liczba czy tekst nie ma dla mnie znaczenia
wybiorę lepszy wariant , w tej kolumnie brak jest pustych wartości
kolumna2:
'12' 2- (maksymalnie) cyfrowa wartość, w Excelu jest to liczba, ale jeśli wydajniejszy jest zapis w postaci "znakowej"
to oczywiście wybieram ten lepszy wariant , w tej kolumnie brak jest pustych wartości
kolumna3:
'130104' 6- ( dokładnie ) znakowy zapis, przedstawiający "datę" - w formacie 'yymmdd' ,
być może efektywniej jest to wyrażać za pomocą prawdziwej daty ( jeśli zajmuje mniej miejsca , szybszy odczyt, przeliczanie, itd )
jeśli tak , to przed załadowaniem danych z Excela , dokonam konwersji... ( wybieram lepszy wariant )
w tej kolumnie brak jest pustych wartości
kolumna4:
'1301' 4- ( dokładnie ) znakowy zapis, przedstawiający "czas" - w formacie 'hh:mm' ,
być może efektywniej jest to wyrażać za pomocą prawdziwego czasu ( jeśli zajmuje mniej miejsca , szybszy odczyt, przeliczanie, itd )
jeśli tak , to przed załadowaniem danych z Excela , dokonam konwersji... ( wybieram lepszy wariant )
w tej kolumnie brak jest pustych wartości
kolumna5:
'12344599' 8- (maksymalnie) cyfrowa wartość, ( coś w rodzaju unikalnego numeru np. artykułu ), w Excelu jest to liczba ,
ale jeśli efektywniej jest to wyrażać za pomocą znaków to wybieram wariant znakowy
w tej kolumnie brak jest pustych wartości
kolumna6:
'ilość' - tu będzie konkretna liczba ( całkowita ) z zakresu ( -9999 do 9999 )
w tej kolumnie brak jest pustych wartości
kolumna7:
'wartość' - tu będzie konkretna wartość ( pieniężna ) z zakresu ( -99999,99 do 99999,99 )
w tej kolumnie brak jest pustych wartości
kolumna8:
kolumny ilość i 'wartość będą jedynymi kolumnami na których będą dokonywane operacje "SUM" dlatego muszą tam być wartości
( chociaż pewnie nie muszą, bo można pewnie przed zsumowaniem, dokonać konwersji na liczbę..... - tak tylko domniemywam jako początkujący SQL-owicz )
kolumna9:
'vat' - pole określające stawkę VAT , ja wyrażam to wpisami ( 23, 8, 5 ) ale czy to będzie liczba czy tekst…
to tylko zależy co jest bardziej wydajne ( zajmujące mniej miejsca )
kolumna10:
'numer zamówienia' - 10 (maksymalnie) znakowy numer zamówienia składający się z cyfr
w większości przypadków będzie to wartość ( wpis ) '0' oznaczający brak zamówienia
w tej kolumnie brak jest pustych wartości
kolumna11:
kilka kolumn typu "TAK" ,"NIE" , albo TRUE, FALSE , ja to wyrażam '0' i '1' , tylko nie wiem co zajmuje mniej miejsca …
w tych kolumnach brak jest pustych wartości
kolumna12:
'nr karty1'
20 (maksymalnie) znakowy wpis określający nr karty ( tu chyba musi być to wyrażane znakowo bo przy wartościach
rzędu : 64123456666778897443 to chyba SQL może ześwirować :-)
w tej kolumnie brak jest pustych wartości
kolumna13:
'nr karty2'
20 (maksymalnie) podobnie jak wyżej , tyle że tutaj mogą się pojawić puste wartości ( o ile może to mieć jakieś znaczenie )
-------------------------------------------------
mam jeszcze dodatkowe pytanie:
SQL Express 2008 ma ograniczenie do 10GB, ale czy jest to ograniczenie dla 1 bazy ?
czy mogę podpiąć 5 baz które mają około 5GB (każda) ?
dziękuję i pozdrawiam
misiex