Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jednym zapytaniem kilka sprawdzen
Forum PHP.pl > Forum > Bazy danych > MySQL
Bojakki
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?
nospor
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?
Bojakki
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:/
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.