[MySQL] Jaki typ pola aby =?ISO-8859-2?Q?trzyma=E6_liczby_od?==?ISO-8859-2?Q?dzielone_przecinkiem_=3F?=
sawic - 05-03-2007 00:01
[MySQL] Jaki typ pola aby =?ISO-8859-2?Q?trzyma=E6_liczby_od?==?ISO-8859-2?Q?dzielone_przecinkiem_=3F?=
Witam. W jednej kolumnie tabeli muszę trzymać liczby (dodatnie, jeżeli ma to znaczenie), oddzielone przecinkami. Zastanawiam się, jaki typ danych wybrać dla tej kolumny, aby było to najlepsze ze względu na wydajność. Częśto będę musiał robić wyszukiwanie wierszy, gdzie w owej kolumnie występuje konkretna liczba. Będę to musiał robić poprzez where kolumna = %liczba%. A wiadomo, że to za wydajne nie jest.
Tabela MyISAM, w bazie około 50k rekordów. Typ pola na razie dałem jako varchar(20) not null.
Da się to jakoś lepiej wykombinować, aby baza wiedziała, że trzymam tylko typ liczbowy i przecinki ?
Pozdrawiam
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 05-03-2007 00:01
sawic wrote: > Witam. > W jednej kolumnie tabeli muszę trzymać liczby (dodatnie, jeżeli ma to > znaczenie), oddzielone przecinkami. > Zastanawiam się, jaki typ danych wybrać dla tej kolumny, aby było to > najlepsze ze względu na wydajność. > Częśto będę musiał robić wyszukiwanie wierszy, gdzie w owej kolumnie > występuje konkretna liczba. Będę to musiał robić poprzez where kolumna = > %liczba%. A wiadomo, że to za wydajne nie jest. > > Tabela MyISAM, w bazie około 50k rekordów. > Typ pola na razie dałem jako varchar(20) not null. > > Da się to jakoś lepiej wykombinować, aby baza wiedziała, że trzymam > tylko typ liczbowy i przecinki ?
Od tego są bazy relacyjne, żeby takie dane trzymać w osobnej tabeli!
-- P.M.
sawic - 05-03-2007 00:01
Paweł Matejski napisał(a): > Od tego są bazy relacyjne, żeby takie dane trzymać w osobnej tabeli! >
Nie mam jak wykombinować tej relacji. W konkretnej kolumnie może nie być nic, a równie dobrze może być pare liczb pooddzielanych przecinkami. Teoretycznie mógłbym założyć, że skoro w komórce mogę umieścić 20 znaków, co po uwzględnieniu przecinków daje max 11 liczb to mógłbym objąć relacją tabelę z 11 kolumnami. Ale może z czasem będę chciał zwiększyć długość tego pola.
Wg mojej wiedzy relacje mi tu nie pomogą a tylko skomplikują sprawę.
Pozdrawiam
=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 05-03-2007 00:01
sawic wrote: > Paweł Matejski napisał(a): >> Od tego są bazy relacyjne, żeby takie dane trzymać w osobnej tabeli! >> > > Nie mam jak wykombinować tej relacji. > W konkretnej kolumnie może nie być nic, a równie dobrze może być pare > liczb pooddzielanych przecinkami. > Teoretycznie mógłbym założyć, że skoro w komórce mogę umieścić 20 > znaków, co po uwzględnieniu przecinków daje max 11 liczb to mógłbym > objąć relacją tabelę z 11 kolumnami. Ale może z czasem będę chciał > zwiększyć długość tego pola. > > Wg mojej wiedzy relacje mi tu nie pomogą a tylko skomplikują sprawę.
Nie nie... Każda liczba to osobny rekord w tej nowej tabeli! To jest prawidłowe rozwiązanie tego problemu!
-- P.M.
sawic - 06-03-2007 00:03
Paweł Matejski napisał(a): > Nie nie... Każda liczba to osobny rekord w tej nowej tabeli! To jest prawidłowe > rozwiązanie tego problemu! >
Hmmm. Będzie tego straaaaaaaasznie dużo. Ale może i faktycznie pod względem wydajności będzie lepsze.
Spróbuję.
Pozdrawiam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Gdzie MySQL 4.1, a gdzie 5.0?
[MS SQL] "set names" (mySQL) w MS SQL
oracle -> oracle lub oracle -> mysql replikacja - programy
[mysql 4.0] SELECT t1.id, t1.foo FROM t1 oraz COUNT t2 w jednym zapytaniu.
[MySQL] Zwrot tego, co pasuje i nie pasuje :-/
[pgsql] Dostosowanie składni MySQL 5.0 -> PGSQL 8.1
[mysql] galeria zdjec - numerowanie zdjec
[MySQL] Zapytanie z pliku , wynik do pliku
[mysql] CONCAT agregujący, ale nie GROUP_CONCAT()
mysql data 0000-00-00 na koniec
zanotowane.pldoc.pisz.plpdf.pisz.plradioaktywni.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|