Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: InnoDB i MyISAM - JOIN
Forum PHP.pl > Forum > Bazy danych > MySQL
wujek2009
Cześć.

Mam parę tabel w bazie, gdzie używam InnoDB oraz tabele "uzytkownicy" jako MyISAM - teraz chciałbym się zapytać jeśli chodzi o relacje (LEFT JOIN/INNER JOIN) tych dwóch typów tabel;

- Czy podczas łączenia InnoDB z MyISAM może dojść do jakiś przeszkód (?) i przez to czas zapytania wydłuży się?
Krótko mówiąc chodzi mi tutaj o optymalizacje.

Kod
Przykład:

| news_id | news_title | news_autor | news_tresc | // InnoDB
| user_id | username | user_password | user_email | // MyISAM

> select n.*, u.* from newsy as n left join uzytkownicy as u on(u.user_id=n.news_autor);


Crozin
Nie powinno być jakiś większych problemów... nasuwa się jedynie pytanie - dlaczego tabela użytkowników to MyISAM, który przy pokazanej strukturze bazy jest prawdopodobnie gorszym rozwiązaniem?
#luq
@Crozin możesz powiedzieć dlaczego w tym wypadku MyISAM jest gorszy (prawdopodobnie)?
Ja tak samo robię. Kiedy tabela gdzieś jest użyta w transakcji -> InnoDB, inaczej -> MyISAM. InnoDB jest przecież wolniejsze od maszyny MyISAM
Crozin
InnoDB to nie tylko transakcje. Nie chce mi się w tej chwili przytaczać argumentów za/przeciw jednemu i drugiemu. Oba mają kilka zalet względem drugiego - w sieci jest pełno porównań. Z reguły to co oferuje InnoDB jest ważniejsze niż niewielka przewaga MyISAM przy odczycie danych (szczególnie na względnie niewielkich tabelach, gdzie ta różnica jest praktycznie nieodczuwalna).
wookieb
Polecam zapoznać się z pełną tabelą możliwości myisam i innodb i dopiero potem porównywać. Czy innodb jest wolniejsze? Zależy w jakich przypadkach i konkretnych zastosowaniach.

Co do odpowiedzi na pytanie autora, nie powinno być żadnych problemów
wujek2009
OK dzięki Panowie za odpowiedź, temat można zamknąć.
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.