konfiguracja bazy danych SQL |
konfiguracja bazy danych SQL |
7.06.2013, 00:03:27
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 6.06.2013 Ostrzeżenie: (0%) |
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 |
|
|
7.06.2013, 07:55:44
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) |
kolumna1 - integer
kolumna2 - integer kolumna3 - date kolumna4 - time kolumna5 - integer kolumna6 - integer kolumna7 - money (decimal) kolumna8 - kolumna9 - tu jest problem - ja bym dał integer, ale stawka pt. 'zwolniony' (to nie to samo, co 0%) się nie wpisze, więc varchar(10) lub varchar(2 lub 3) - 'zw' lub 'zw.' kolumna10 - varchar(10) kolumna11 - bit (nie pamiętam., czy MS SQL dał już typ boolean) kolumna12 - varchar(20) kolumna13 - varchar(20) indeksy (po zaimportowaniu danych) na pola: - kolumna1 - kolumna3, kolumna4 - kolumna5 - kolumna10 - kolumna12 - kolumna13 |
|
|
Wersja Lo-Fi | Aktualny czas: 2.05.2024 - 15:24 |