![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
witam
mam nastepujacy proble sa 3 tabele tab1, tab2 i tab3 potrzebuje dostac rekordy ktore występują w tab1 ale nie mają odpowiednika w tab2 lub tab3, lub tez w zadnej z nich. probowalem cos w stylu
ale nie dalo to dobrych rezultatów -------------------- php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::.. www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
chyba IS NULL a nie = NULL
-------------------- |
|
|
![]() ![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
rzeczywiscie pomoglo
![]() teraz mam takie pytanie, w tej pierwszej tabeli jest kilka tysiecy rekordow w drugiej kilkaset a w trzeciej niewiele, jak to zoptymalizowac, bo teraz sie wykonuje pare minut -------------------- php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::.. www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Możesz spróbować zapisać swoje zapytanie za pomocą NOT EXISTS lub NOT IN. Przy takim rozłożeniu danych może być taka opcja wydajniejszcza. Dodatkowo możesz założyć indeksy (w zależności od selektywności kolumny ) na pole wykorzystywane do złączenia.
-------------------- MySQL said:
You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Cytat chociaz nie rozumiem jaka jest roznica W bazach danych nie ma czegos takiego ze jest rowne null. Zawsze sie stosuje IS NUL, lub IS NOT NULL. A co sie bede tlumaczyl, dokumentacja SQLa i juz. Tam wszystko pisze. Odnosnie optymalizacji. Mozesz podeslekta i mieszac ulozeniem warunkow. Na poczatku warunki do najmniejszej liczby a potem laczysz z wiekszymi tabelami (wiecej rekordow). -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
podselekta tzn? mozna jakis przykład prosić ?
-------------------- php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::.. www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 13 Pomógł: 0 Dołączył: 6.09.2005 Skąd: Kraków / Katowice / Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat(a79rtur @ 2005-09-23 08:30:17) witam mam nastepujacy proble sa 3 tabele tab1, tab2 i tab3 potrzebuje dostac rekordy ktore występują w tab1 ale nie mają odpowiednika w tab2 lub tab3, lub tez w zadnej z nich. probowalem cos w stylu
ale nie dalo to dobrych rezultatów Z doświadczenia wiem że najdłużej trwają w MySQLu zapytania z OR ;/ Ja bym proponował zrobic w ten spoób:
Mam nadzieje że pomoże ![]() Cytat("SongoQ") Mozesz podeslekta i mieszac ulozeniem warunkow Podselekty w mysqlu są bardzo mało wydajne i dodatkowo dostępne dopiero od wersji 5 w SELECT ;/Pozdrawiam ![]() ... -------------------- The people who are trying to make this world worse are not taking a day off. How can I? - Light up the darkness
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
mozliwe ze to jest ok, tyle ze to mi zwraca sume tych wyników z selektów. mi potrzeba czesc wspolną, czyli te co spelniają oba te warunki a nie przynajmniej jeden z nich. probowalem INTERSECT albo blad jest, moze przez te LEFT JOIN'y ?
Ten post edytował a79rtur 24.09.2005, 19:01:26 -------------------- php 5.1.2 & Apache 2.0.50 & MySQL 4.1.7 @ WinXP Pro
..:: GG 6449856 ::.. www.londyn.me.uk - ogłoszenia mieszkaniowe dla Londynu |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 13 Pomógł: 0 Dołączył: 6.09.2005 Skąd: Kraków / Katowice / Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat(a79rtur @ 2005-09-24 16:25:00) mozliwe ze to jest ok, tyle ze to mi zwraca sume tych wyników z selektów. mi potrzeba czesc wspolną, czyli te co spelniają oba te warunki a nie przynajmniej jeden z nich. probowalem INTERSECT albo blad jest, moze przez te LEFT JOIN'y ? Hmm - to ja ma spełniać oba te rarunki to dlaczego dajesz OR w zapytaniu ![]()
Dodatkowym czynnikiem zwiększającym szybkośc może być nałożenie indexów na pola na których robisz złączenia ;] Pozdrawiam ![]() ... -------------------- The people who are trying to make this world worse are not taking a day off. How can I? - Light up the darkness
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 83 Pomógł: 0 Dołączył: 23.02.2005 Ostrzeżenie: (10%) ![]() ![]() |
a79rtur. Jeśli chodzi Ci o selekcję, to czemu używasz operatorów projekcji?
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 16:38 |