Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

klucz główny [mysql, postresql]

0 views
Skip to first unread message

chrome_cube

unread,
Sep 16, 2004, 5:33:47 PM9/16/04
to
czy kluczem głównym (primary key) może być pole typu VARCHAR(255) bądź
TXT ? wiem że da się to tak zrobić, ale czy jest to w jakimś sensie
niewłaściwe bądź może powodować pracę bazy danych ?

Sławomir Szyszło

unread,
Sep 16, 2004, 5:46:11 PM9/16/04
to
Dnia Thu, 16 Sep 2004 23:33:47 +0200, chrome_cube <qqjj@[no-spam]o2.pl>
wklepał(-a):

>czy kluczem głównym (primary key) może być pole typu VARCHAR(255) bądź
>TXT ? wiem że da się to tak zrobić, ale czy jest to w jakimś sensie
>niewłaściwe bądź może powodować pracę bazy danych ?

Teoretycznie można tak. Ale łatwiej i szybciej jest porównywać liczby, a nie
stringi. Łatwiej jest zadbać o unikalność liczb. Do tego dochodzą indeksy na
polach tekstowych...
--
Sławomir Szyszło mailto:slas...@poczta.onet.pl
Primus inter FAQires & Grand Inquisitor no.0 of pl.comp.bazy-danych
FAQ pl.comp.bazy-danych http://www.dbf.pl/faq/
Archiwum http://groups.google.com/groups?group=pl.comp.bazy-danych

Grzegorz Szyszlo

unread,
Sep 30, 2004, 5:32:26 AM9/30/04
to

pracę bazy danych powoduje podłączenie się do niej i wydawanie jej zlecen :))))

a tak na serio. w bardzo starych silnikach na indeks główny uzywało się
pól typu CHAR(ilestam), bo .... porownanie liczb bylo "liczbowym"
porownaniem napisow. dlatego indeks na CHAR dzialal szybciej.

ale wspolczesnie, i w twoim przypadku nie ma tego problemu.
dlatego klucz glowny warto oprzec o indeks numeryczny, bo mniej danych
sie porownuje. tak bardzo mocno upraszczajac, operujac na danych 1 bajt
(8 bitow) dla typu CHAR(3) trzeba porownac 3 bajty, a dla numerycznego
tylko jeden na kazda ze stron porownania. im wiekszy zakres liczbowy,
tym gorzej dla typu CHAR.

znik.

0 new messages