Re: Problemy z baza MySQL po przenosinach

2007-10-02 Wątek Marcin Kurzyna
On Tuesday 02 October 2007 00:50:26 Paweł Kośka wrote:

> W załączniku wynik z explain wyżej wspomnianego zapytania, na zlej i dobrej
> bazie. Ktoś może podpowiedzieć jak naprawić tą bazę?

bez desc dla tabel nie ma szans nikt nic powiedzieć. ogólnie mysql zaczął w 
innej kolejności odpytywać tabele (nie wiedzieć czemu) przez co nie używa 
indeksów poprawnie. czemu działa stara baza ok? nie wiem - może jakiś 
compatibility mode się włącza.

w każdym razie na pewno prosto możesz naprawic zmieniając kwerendę na joiny 
(zresztą to jest podstawowy kandydat do joinów in the first place). druga 
możliwość to wymuszenie w kwerendzie użycia indeksów - pytanie czy możesz 
zmieniać zapytanie (i czy to tylko ta jedna czy 20 innych w całej aplikacji 
też).

w każdym razie to trochę NTG (trochę bardzo) - jak chcesz to napisz do mnie na 
priv.


m.

___
pld-users-pl mailing list
pld-users-pl@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-users-pl


Problemy z baza MySQL po przenosinach

2007-10-01 Wątek Paweł Kośka
Witam,

Przenosiłem bazę danych MySQL z serwera 4.1 na 5.0
Kopie wykonywałem przez polecenie mysqldump --opt ...

No i jest pewien problem, coś mi się chyba rozjechało, a nie mogę dość co.

Mam takie zapytanie:
SELECT * FROM linki_comments as comments, linki_photos as photos, linki_users 
as users WHERE (photo_active = '1') AND (comments.photo_id = photos.photo_id)  
AND (comments.user_id = users.user_id) ORDER BY comment_id  DESC LIMIT 30;

No i teraz to zapytanie mam:
30 rows in set (3 min 27.92 sec)

Mam kopie plików ze starego serwera MySQL i jak je wrzucę 
do /var/lib/mysql/mysqldb/db/ to ta baza działa bardzo ładnie.
30 rows in set (0.00 sec)

W załączniku wynik z explain wyżej wspomnianego zapytania, na zlej i dobrej 
bazie. Ktoś może podpowiedzieć jak naprawić tą bazę?

-- 
Pozdrawiam,
Paweł
 mysql> use zla
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> explain SELECT * FROM linki_comments as comments, linki_photos as 
photos, linki_users as users WHERE (photo_active = '1') AND (comments.photo_id 
= photos.photo_id)  AND (comments.user_id = users.user_id) ORDER BY comment_id  
DESC LIMIT 30;
++-+--++--+--+-+--+---+--+
| id | select_type | table| type   | possible_keys| key  | key_len 
| ref  | rows  | Extra|
++-+--++--+--+-+--+---+--+
|  1 | SIMPLE  | photos   | ALL| PRIMARY  | NULL | NULL
| NULL | 23753 | Using where; Using temporary; Using filesort |
|  1 | SIMPLE  | comments | ref| photo_id,user_id | photo_id | 3   
| zla.photos.photo_id  |28 |  |
|  1 | SIMPLE  | users| eq_ref | PRIMARY  | PRIMARY  | 3   
| zla.comments.user_id | 1 | Using where  |
++-+--++--+--+-+--+---+--+
3 rows in set (0.00 sec)

mysql> use dobra
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> explain SELECT * FROM linki_comments as comments, linki_photos as 
photos, linki_users as users WHERE (photo_active = '1') AND (comments.photo_id 
= photos.photo_id)  AND (comments.user_id = users.user_id) ORDER BY comment_id  
DESC LIMIT 30;
++-+--++---+-+-+-++-+
| id | select_type | table| type   | possible_keys | key | key_len | 
ref | rows   | Extra   |
++-+--++---+-+-+-++-+
|  1 | SIMPLE  | comments | index  | photo_id  | PRIMARY | 3   | 
NULL| 736746 | |
|  1 | SIMPLE  | users| eq_ref | PRIMARY   | PRIMARY | 3   | 
dobra.comments.user_id  |  1 | Using where |
|  1 | SIMPLE  | photos   | eq_ref | PRIMARY   | PRIMARY | 3   | 
dobra.comments.photo_id |  1 | Using where |
++-+--++---+-+-+-++-+
3 rows in set (0.00 sec)

___
pld-users-pl mailing list
pld-users-pl@lists.pld-linux.org
http://lists.pld-linux.org/mailman/listinfo/pld-users-pl