|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
[OffTopic] Dodatkowe pola w bazie - wybór tabeli i obciążeni |
Autor |
Wiadomość |
tymek

Posty: 433
|
Wysłany: 10-02-2011, 16:39 [OffTopic] Dodatkowe pola w bazie - wybór tabeli i obciążeni
|
|
|
Witam!
Chciałbym sprawdzić swoją hipotezę ;>
Ostatnio zlecałem napisanie moda, który dodaje dodatkowy opis tematów - było cośpodobnego na forum i polega to też mniej więcej na tym samym, z tym, że pola będą troche bardziej rozbudowane. W każdym polu z osobna będą znajdować się takie dane jak np. opis, linki, i krótkie opisy jak alternatywny tytuł, gatunki, itd.
1. Teraz moje pytanko.
Aktualnie mam dodane te dodatkowe pola w tabeli post_text. Moje pytanko brzmi, czy wydajniej (szybsze generowanie strony / mniejsze obciążenie serwa) byłoby umieścić te dodatkowe pola w tabeli topics? Dodatkowe pola są tylko dla pierwszego postu danego tematu, więc reszta postów z nich korzystać nie będzie, ale jako, że pola są dodane w tabeli post_text, to każdy post z osobna ma dodatkowe pole.
2. Jeśli chodzi o szukajkę, to wydajniej napewno byłoby umieścić pola w tabeli topics, bo jesli szukajka ma przeszukiwac bazę np. wg pola gatunek, wtedy, gdy dodatkowe pola znajdują się w tabeli post_text (110k postów / wpisów) przeszukiwanie będzie trwało dłużej niż jakby szukajka miałą przeszukiwać tylko tabelę topics (7k tematów / wpisów). Mam rację?
3. A jak to wygląda jeśli chodzi o wyświetlanie strony viewtopic?
Czy to, jeśli dodatkowe pola znajdowałyby się w post_text, czy w topics, miałoby jakiś wpływ? Przypomnę, że te dodatkowe pola są jedynie wykorzystywane do opisu tematu / pierwszego posta.
-->>
Wezmy jeszcze raz te dwie tabele pod uwagę, post text (w ktorej obecnie mam dodatkowe pola) i topics.
Czy przy samym wyświetlaniu tych dodatkowych danych z dodatkowych pol (przy któych tylko pierwszy post ma wypełnione te dodatkowe pola, a reszta postów - puste pole), np w viewtopic, czas generowania strony różniłby się, jesli te pola nie byłyby w post text, tylko w topics? ;>
Mógłby mi ktoś na te pytanka odpowiedzieć, albo ewentualnie to opisać i coś doradzić? ;> |
_________________ Szukam programisty PHP, który wykona parę zleceń - modyfikacje na forum. Proszę o kontakt na PW. |
|
|
|
 |
Gadatliwa Kasia
|
|
|
|
kevin_

Posty: 2680
|
Wysłany: 10-02-2011, 17:57
|
|
|
Ad1: Twoje rozwiązanie byłoby OK. Zamiast dane pchać do phpbb_posts_text to umieścić je w phpbb_topics. W tej chwili Twoja tabela posts_text będzie ciup więcej ważyć, bo dla każdego postu w temacie będzie ona przypierała standardową wartość (np. " " (pusto)) - zależy jak kolumna jest zaprojektowana. A tak to wiadomo, nie każdy temat będzie miał wypełnione pola - OK, ale lepiej jeden temat niż np. 30 postów z kolumnami dla danego tematu. Do zapytania SQL dopisać regułkę aby pobierało te "dodatkowe" kolumny tylko dla określonych działów (bo zakładam, że wszędzie nie są wymagane) - w skrócie: pobierać to co jest nam potrzebne, a nie stosować * (np. select * from phpbb_topics). UPDATE: Bądź nawet utworzyć nową tabele i tam "ładować" dane z gatunkami, tabela mniej więcej o strukturze:
id_tematu | pole_1 | pole_2 | pole_3 |
Ad2: Mniej rekordów, szybsze szukanie. Dla polepszenia wydajności polecam poczytać o INDEX (mysql), bądź FULLTEXT (mysql, tabela: MyISAM). Choć zawszę możesz pobawić się w testowanie co będzie szybszym rozwiązaniem - w phpMyAdminie masz czas w jakim dane zapytanie się wykonało. Więc na przykład w common.php odblokuj $show_queries na "1" - na dole forum wyświetlą Ci się wykonywane zapytania. Skopiuj jedno z zapytań, wklej do phpMyAdmina i odczytaj tekst. Jeśli czas jest za duży, to musisz zadbać o lepsze rozwiązanie.
Drugim rozwiązaniem jakie polecam, to modyfikacja pliku db/$dbms (config.php, zmienna - zależy jakiej klasy używasz) i dodanie czasu w jakim wykonują się zapytnaia. Ostatnio pisałem moda artykułów, i wykonałem właśnie coś takiego, fajna sprawka. Do wykonania tego zainteresuj się php microtime
Nazwa twojego forum -- System artykułów_1297344358607.png
|
 |
Plik ściągnięto 41 raz(y) 22,54 KB |
|
_________________ Prezes |
|
|
|
 |
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
| Strona wygenerowana w 0,08 sekundy. Zapytań do SQL: 13 | |
 |
|