Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: optymalizacja połączenia trzech tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
bubu77
witam. mam 3 tabele z czego pierwsza ma 77 rekordów, druga 250tyś, a trzecia prawie 3 miliony. połączyłem je zapytaniem na dole. wynik chce wyświetlić w excelu. jednak zapytanie wykonuje się godzine i jeszcze nie doczekałem się na wynik. może mi ktoś podpowiedzieć co muszę zrobić? dodam, że na wszystkich tabelach jest klucz główny.

Kod
<?php
header("Content-type: application/vnd.ms-excel");

require_once('../includes/conf.php');
require_once('../includes/mysql.php');
require_once('../includes/users.php');
require_once('../includes/funkcje.php');

$naglowki = array('KAM', 'PH', 'idBH',
      'PHPH', 'DSA', 'KSA', );

$result = mysql_query("SELECT a.pos_id, s.tp_id_partnera, p.tp_id_partnera
      FROM akt_licz_bh a
        INNER JOIN
        smp_10_11 s ON s.tp_id_partnera = a.pos_id
        INNER JOIN _pki_015_10_11 p ON s.tp_id_partnera = a.pos_id
        
        WHERE s.NUMER_ZAMOWIENIA LIKE 'TEL000040293255'
        
     ;");
dr_bonzo
Zacznij od
  1. EXPLAIN SELECT a.pos_id, s.tp_id_partnera, p.tp_id_partnera
  2. FROM akt_licz_bh a
  3. INNER JOIN smp_10_11 s ON s.tp_id_partnera = a.pos_id
  4. INNER JOIN _pki_015_10_11 p ON s.tp_id_partnera = a.pos_id
  5.  
  6. WHERE s.NUMER_ZAMOWIENIA LIKE 'TEL000040293255


i zobacz co pokazuje, jakie indeksy uzywa, jak wybiera rekordy

I klucz glowny nie wystarcza, klucze obce tez musza miec indeksy
bubu77
wyskoczyło mi coś takiego. Tylko nadal nie wiem co mam zmienić... sciana.gif



table type possible_keys key key_len ref rows Extra aALLNULLNULLNULLNULL77 pALLNULLNULLNULLNULL256282 sALLNULLNULLNULLNULL2905662Using where
dr_bonzo
1. Podales to w "bardzo czytelnym formacie"
2. Skanuje ci wszysstkie wiersze tabeli, zamiast uzywac indeksow, pozakladaj indeksy na kolumny ktore uzywasz w JOINach i WHERE
bubu77
Sorry za format. Dzięki za pomoc. Już śmiga normalnie.
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.