Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jednym zapytaniem kilka sprawdzen, czy sie w ogole da?
Bojakki
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


Mam tabele 3 identyczne, mniej wiecej w postaci:
Nozyczki - [id] [nazwa] [rodzaj]
Papier - [id] [nazwa] [rodzaj]
Kamien - [id] [nazwa] [rodzaj]

I teraz w jaki sposob, nie uzywajac 3 zapytan i w jak najwydajniejszy sposob sparwic by zadzialalo to tak:
- sprawdza czy w tabeli 'Nozyczki' jest przynajmniej jeden raz id=1, jesli jest pisze TAK, jesli nie pisze NIE
- sprawdza czy w tabeli 'Papier' jest przynajmniej jeden raz id=1, jesli jest pisze TAK, jesli nie pisze NIE
- sprawdza czy w tabeli 'Kamien' jest przynajmniej jeden raz id=1, jesli jest pisze TAK, jesli nie pisze NIE

Czy fakt ze wszystie 3 tabele sa identyczne jest lepsze nizby bylo inaczej?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




jak dla mnie trzymanie 3 identycznych tabel jest pomyłką. rownie dobrze moze byc jedna z dodatkowym polem, po ktorym bys rozroznial czy to kamien, papier i co tam jeszcze chcesz.
po drugie: masz tam pole id. z tresci posta wywnioskowalem ze kilka rekordow moze miec takie samo id. hmmm, to co to za id ze moze byc kilka takich samych?
Go to the top of the page
+Quote Post
Bojakki
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 0
Dołączył: 18.08.2004

Ostrzeżenie: (0%)
-----


beda dwa ID, jedno unikalne, drugie bedzie id oznaczajace do jakiego obiektu odnosi sie dany rekord, ale nie wpisalem tego gdyz uwazalem, ze ni ebdzie to istotne przy rozwiazywaniu problemu. Rozlozylem to na kilka tabel bo uwzazalem ze zapytania do tabeli, ktora ma 30 tys rekordow a nie np. 200 tys beda duzo szybsze, tym bardziej ze bedzie ono duzo czesciej wykonywane niz to powyzsze o ktore sie pytam. Z tym, ze moge sie mylic bo jest to moja pierwsza baza danych.

tak wiec dlugo wykonywaloby sie zapytanie w postaci?

  1. "SELECT *
  2. FROM tabela WHERE id=$_GET[wsk] and rodzaj=$_GET[gen]"

Powiedzmy, ze tabela posiada 200 tys rekordow. Bo moze rzeczywiscie sie nie oplaca tego rozbijac.
W przypadku rozbicia tabeli na mniejsze liczba rekordow wynolilaby ok. 20-40 tys dla tabeli a zapytanie wygladaloby:

  1. "SELECT *
  2. FROM tabela WHERE id=$_GET[wsk] "


Z tym, ze czasami wlasnie tzrebabyloby wyslac zapytanie do kilku tabel, a tu znowusz dzialloby to wolniej niz w przypadku jednej. Teraz to juz nie wiem jak zrobic by bylo lepiej:/
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:25