Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Nazwa pola i jej wpływ na wydajność
The Night Shadow
post
Post #1





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Czy długość nazwy pola (kolumny tabeli) w bazie danych ma znaczący wpływ na wydajność połączeń z bazą danych?

Pytam, bo chciałbym używać zamiast

d_pref_dzial_on

np.

dzial_ustawienia_dzial_wlaczony

Mowa tu o ciągach długości maksymalnie 40-50 znaków.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
The Night Shadow
post
Post #2





Grupa: Zarejestrowani
Postów: 495
Pomógł: 2
Dołączył: 5.02.2006
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Tabela nie nazywa się działy tylko elementy, a jednym z elementów jest dział. To, że wiele pól rozpoczynać się będzie od prefiksu dzial_ nie oznacza, że baza jest źle zaprojektowana. Oznacza jedynie tyle, że w jednej tabeli możesz mieć kilka typów danych i chcieć je wzajemnie sortować.

Załóżmy, że masz tabelę części, a w niej kilka typów danych silnik, koło, kierownica. Mają one pewne wspólne cechy jak waga nazwa, data dodania itp. Mają jednakże również zupełnie różne względem siebie właściwości i tak masz kolumny

typ danych (silnik, koło, kierownica)
nazwa
waga
data dodania
data ostatniej modyfikacji
silnik_moc
silnik_pojemnosc
kolo_srednica
kolo_felga
kierownica_kolor
kierownica_material
kierownica_wspomaganie

Umieszczasz to w jednej tabeli, ponieważ to tak naprawdę pozwala najszybciej sortować dane.

Można to podzielić na kilka tabel, ale aby sortować lub filtrować te dane trzeba by korzystać z JOINÓW, a o ile mi wiadomo JOIN powoduje, że każdy pobierany rekord z tabeli A powoduje przeszukanie całej tabeli B (do moment u natrafienia na rekord zbieżny).

Nie muszę tworzyć zbiorczej tabeli tymczasowo zbierającej te dane, bo wszystko już jest w jednej wspólnej tabeli. To zwiększa możliwości. Robisz sobie filtry: pokaż tylko koła, pokaż tylko kierownice, pokaż tylko silniki, albo pokaż wszystkie części, ale koła ogranicz do takich o określonej średnicy itp.

Powyższe zakłada, że tych elemenów będzie NIE WIĘCEJ niż 3. Nie są to produkty sklepu, przykład części nie jest tu zbyt dobry, ale załóżmy, że części są TYLKO I NIE WIĘCEJ ORAZ WYŁĄCZNIE NIE MNIEJ NIE WIĘCEJ JAK WŁAŚNIE TRZY :- ).

JOINY przecież marnują czas pracy, zbędnie x razy przeszukują wiele tabel. To jakby próbowac rozdzielić imię i nazwisko użytkownika na dwie tabele tylko dlatego, że jedno jest imieniem, a drugie nazwiskiem i nie są tym samym.

Nie chcę używać angielskich nazw kolumn tak samo jak nie używam angielskich nazw zmiennych itp.

Ktoś powiedział, że anglojęzyczne nazwy zmiennych i kolumn są ok i Ty się tym zasugerowałeś, natomiast sposób nazewnictwa zmiennych nie ma kompletnie żadnego wpływu na jakość, wydajność i elastyczność kodu. Ważniejsze jest dla mnie to czy jak użyję 50 znaków zamiast 15 w nazwie kolumny tabeli zauważę znaczy spadek wydajności zapytań przy powiedzmy kilku tysiącach rekordów.

Oczywiście wyprzeć się możesz stwierdzeniem, że to ułatwi czytanie kodu innym niekoniecznie polskim programistom, ale tego typu sytuacje z reguły nie zdarzają jeśli nie programujesz jako pracownik. Będąc pracownikiem podlegasz regułom, a bo to wspólnik anglik, a bo inny koder anglik, a bo to manager nie z polski. Pracując na własne konto samodzielnie definiujesz reguły.

Ten post edytował The Night Shadow 11.04.2009, 20:30:07
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 03:46