Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][SQL] tabele, kolumny i wydajne zapytania
Forum PHP.pl > Forum > PHP
fr33d0m
Hello,

Mam 100 kolumn w jednej tabeli i 3 zapytania typu "SELECT * FROM..." oraz kilka zapytań typu: "SELECT id FROM..."
Czy gdybym podzielił te 100 kolumn na dwie tabele (częściej i rzadziej używane dane) to było by to bardziej optymalne rozwiązanie od bieżącego, czy nie?? dodam, że w tych stu kolumnach będzie ze 3 tysiące ID i oczywiście do każdego ID równolegle będą podstawione dane w każdej kolumnie.

Pozdrawiam

tehaha
jeżeli nie zawsze będziesz używał wszystkie kolumny to wydaje mi się, że lepiej jest podzielić, tzn. te kolumny, które najczęściej stosujesz w podstawowej tabeli, a jakieś rzadziej używane dane w innej i łączysz JOIN'em, tu masz dodatkowo artykuł o wypływie liczby kolumn na wydajność http://www.mysqlperformanceblog.com/2009/0...ts-performance/
fr33d0m
Hmm, aby na pewno można ufać temu artykułowi? ja się nie znam, ale trochę dziś naczytałem się przykładów z Google i jak dla mnie podejrzane wydają się te dane:
  1. CREATE TABLE `t99v1` (
  2. `t1` tinyint(3) UNSIGNED NOT NULL,
  3. `t2` tinyint(3) UNSIGNED NOT NULL,
  4. ...
  5. `t99` tinyint(3) UNSIGNED NOT NULL,
  6. `v1` varchar(1) NOT NULL
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  8.  
  9.  
  10. t99v1 - 12.36 sec (1M rows/sec ; 93MB/sec)

- nie sądzicie, że trochę za duży ten czas ładowania?

Ponadto, znalazłem stronę gdzie jest napisane aby korzystać z jednej tabeli nawet jeśli będzie duża ilość kolumn. W wyszukiwaniach Google natknąłem się na małą ilość opinii na ten temat, w dodatku były podzielone...
Daimos
Czas był długi, ale przeczytaj uważnie i zobacz ile danych tam umieszczono

Ja osobiście zgadzam się z tehaha
Masz 100 kolumn? Nie wierzę, że wszystkich używasz na raz, w każdej możliwej sytuacji. Trzeba zaplanować taką tabelę porządnie i podzielić według tego, jak często korzystasz z wybranych danych
fr33d0m
Nie, nie używam wszystkich na raz. Często używam tylko połowę, a skoro radzicie podzielić to zaraz wezmę się za to.
A odnośnie wydajności baz danych to w jaki sposób mądrze skonstruować ją w sposób, aby była wydajna kolumna odpowiedzialna za 'znajomych' na liście w profilu.
Chodzi mi o coś takiego jak 'Znajomi' na NK. Osobiście myślałem, że stworze kolumnę o nazwie 'znajomi'(BLOB) i w niej będę dodawał poszczególne ID znajomych, oddzielone przecinkami a po stronie PHP przerobię je funkcją explode() i jakoś powyciągam poszczególne ID - przypisując do loginu. Nie wiem czy to co piszę jest wydajne i realne do spełnienia, więc jeśli ktoś by mnie naprowadził na dobry trop myślenia, to byłbym bardzo wdzięczny.

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.