![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
Witam,
Co będzie działało szybciej w praktyce: pobranie dwóch pól z tabeli np. typ, np. "strona" oraz id, np. "1" i ich pobranie czy może jedno pole, np. strona/1, a następnie rozdzielenie w PHP (np. funkcją split)? Co będzie szybsze? Tylko nie piszcie "Zrób testy to się dowiesz". Może ktoś już miał podobny problem i robił testy lub ma większe doświadczenie. Myślę, że przy większej bazie, np. z milionem rekordów może to mieć duże znaczenie. Pozdrawiam Ten post edytował phpowiec2 26.05.2009, 17:49:47 |
|
|
|
Post
#2
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat Tylko nie piszcie "Zrób testy to się dowiesz". A właśnie napiszę - przyda Ci się microtime" title="Zobacz w manualu PHP" target="_manual Cytat Myślę, że przy większej bazie, np. z milionem rekordów może to mieć duże znaczenie. Owszem - poszukiwanie wg tych pól i rozbrajanie ich w SELECT byłoby bezsensem... |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
Robienie testów jest trochę pracochłonne ale może się opłacić w ostatecznym rozrachunku:) Myślałem właśnie o użyciu microtime.
Cytat Owszem - poszukiwanie wg tych pól i rozbrajanie ich w SELECT byłoby bezsensem... - nie za bardzo rozumiem co miałeś tutaj na myśli, tzn. że bez robienia testów jesteś za splitem?
Ten post edytował phpowiec2 26.05.2009, 19:05:34 |
|
|
|
Post
#4
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
Cytat Robienie testów jest trochę pracochłonne bez pracy nie ma kołaczy Cytat - nie za bardzo rozumiem co miałeś tutaj na myśli, tzn. że bez robienia testów jesteś za splitem? Nie - jestem za umieszczeniem danych w osobnych kolumnach. Przy splicie wyciąganie danych przez zapytanie byłoby bardziej zasobożerne. |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 102 Pomógł: 13 Dołączył: 6.07.2008 Skąd: Nowy Sącz Ostrzeżenie: (0%)
|
|
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
Cytat SELECT (`id`, `strona`) FROM `typ` WHERE (...) bardziej o coś takiego SELECT (`id`, `typ`) FROM `tabela` WHERE (...) lub druga opcja SELECT (`id_typ`) FROM `tabela` WHERE (...) i pobraną wartość (w formie np. "strona-1") dzieliłbym sobie na zmienne poprzez split Ten post edytował phpowiec2 26.05.2009, 20:21:17 |
|
|
|
Post
#7
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
A po grzyba to dzielic w php, skoro mozesz miec pobrane w osobnych polach?
I po grzyba trzymac polaczone w bazie -co z tego bedziesz mial? Jak bedziesz chcial jakies zlaczenie, warunek w bazie zrobic na tych polach to ja zajedziesz. A pobranie ich osobno i tak jest szybkie, a tylko sobie komplikujesz niepotrzebnie system. Cytat Może ktoś już miał podobny problem i robił testy lub ma większe doświadczenie. No raczej nikt nie wpadl na tak glupi pomysl. Ten post edytował dr_bonzo 26.05.2009, 20:25:14 |
|
|
|
Post
#8
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
Po takiego grzyba, że zapytania do bazy optymalizuje się m. in. w ten sposób, że pobiera się jak najmniejszą liczbę pól przy zapytaniu. Przy malutkiej bazie i małej ilości zapytań oczywiście nie ma sensu się bawić w takie rzeczy. Sytuacja komplikuje się przy dużej bazie i ogromnej ilości zapytań.
Cytat Jak bedziesz chcial jakies zlaczenie, warunek w bazie zrobic na tych polach to ja zajedziesz. Przecież można trzymać dane też w polach osobno (na wypadek skorzystania), tylko z nich nie korzystać w aplikacji, wiadomo. Ten post edytował phpowiec2 26.05.2009, 20:47:09 |
|
|
|
Post
#9
|
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%)
|
Że tak powiem, w jednej kolumnie trzymam jedne dane. Jak miałbym później rozdzielać w php, to już bym wolał sobie to w pliku trzymać, bo po co wtedy baza?
|
|
|
|
Post
#10
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
to zrob ten test a oswiecisz nas wszystkich. Zajmie ci to 10 minut wlacznie z wlozeniem miliona rekordow do bazy (choc proces generowania miliona rekordow moze potrwac dluzej niz 10 minut)
Ja osobiscie jestem za dwoma polami. zdecydowanie latwiej wowczas przeprowadza sie wszelkie operacje na bazie - uwierz na slowo. |
|
|
|
Post
#11
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
Podobne rozwiązanie widziałem w Drupalu i stąd moje dywagacje na ten temat.
|
|
|
|
Post
#12
|
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów |
A czy tam nie jest przypadkiem coś w stylu cache'u mapowań rewrite zapisanych w celu szybszego odczytu?
|
|
|
|
Post
#13
|
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 21.02.2009 Ostrzeżenie: (0%)
|
też ale nie tylko
|
|
|
|
Post
#14
|
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%)
|
Cytat Po takiego grzyba, że zapytania do bazy optymalizuje się m. in. w ten sposób, że pobiera się jak najmniejszą liczbę pól przy zapytaniu Pobiera sie taka liczbe pol jaka potem potrzebujesz. Nigdzie tu nie mowia zebys "trzymal caly rekord w jednym polu". I wez te testy przeprowadz, 4h tylko gadasz zamiast to dawno zrobic. |
|
|
|
Post
#15
|
|
|
Grupa: Zarejestrowani Postów: 592 Pomógł: 62 Dołączył: 3.08.2006 Ostrzeżenie: (0%)
|
wyobraź sobie, że chcesz wyszukać rekord typ:strona o id=15, ciekawe ile to by zajęło czasu... (i napisanie jeszcze dobrego zapytania, które to wszystko rozdzieli i porówna) :/
|
|
|
|
Post
#16
|
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 7 Dołączył: 8.12.2003 Skąd: Andrychów Ostrzeżenie: (0%)
|
A ja dodam tylko że powinno być w osobnych polach. Bo jak wyniki z teorii baz danych błędne są tabele które w polach zawierają dane wielowartościowe.
|
|
|
|
Post
#17
|
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 1 Dołączył: 5.02.2007 Ostrzeżenie: (0%)
|
Zrób w osobnych kolumnach...
Bo ostatecznie okaże się że ze splitem nie jest wcale wydajniej (bolączką bazy jest wyszukiwanie a nie pobieranie)... A jak będzie wydajniej to róznica będzie taka że musiałbys mieć aplikację z milionami requestów żeby miało to jakies znaczenie.... |
|
|
|
![]() ![]() |
|
Aktualny czas: 21.12.2025 - 23:25 |