View dauert ewig - Select geht blitzschnell ?

View dauert ewig - Select geht blitzschnell ?

am 31.07.2007 22:40:45 von hans.schneider8

Hallo NG,

ich arbeite mit phpMyAdmin - 2.10.3 und einem MySQL 5.0.32-Server
unter Debian und probiere gerade mit Views zu arbeiten.

Dabei passiert folgendes:

Ein SELECT , das 2 mit Join verknüpfte Tabellen und ein mit LEFT JOIN
verknüpften View abfragt, dauert in der Ausführung lt. phpmyadmin
blitzschnell (phpmyadmin: "Zeige Datensätze 0 - 99 (283 insgesamt, die
Abfrage dauerte -0.0092 sek.)")

Wenn ich dieses Select als View definiere und dann dieses View
anzeigen lassen möchte, dauert die Ausführung ewig. (phpmyadmin:
"Zeige Datensätze 0 - -1 (0 insgesamt, die Abfrage dauerte 612.6911
sek.)"), die Anzahl der zurückgegebenen Datensätze wird auch nicht
korrekt angezeigt.

Das View ist somit nicht anwendbar, woran liegt der Unterschied der
Ausführung des Selects und des Views, und wie kann man das umgehen?

Ich bin für jeden Hinweis dankbar!

Mfg, Hans

Re: View dauert ewig - Select geht blitzschnell ?

am 01.08.2007 09:43:35 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: View dauert ewig - Select geht blitzschnell ?

am 01.08.2007 11:02:10 von hans.schneider8

On 1 Aug., 09:43, Andreas Kretschmer
wrote:
> begin hans.schneid...@freenet.de wrote:
> > Das View ist somit nicht anwendbar, woran liegt der Unterschied der
> > Ausführung des Selects und des Views, und wie kann man das umgehen?
> > Ich bin für jeden Hinweis dankbar!
>
> Reicht Dir, wenn ich einmal laut 'EXPLAIN' rufe?
>
> end
> Andreas
> --
> q: why do so many people take an instant dislike to mysql?
> a: it saves time (oicu in #postgresql)
> Explaining the concept of referential integrity to a mysql user is like
> explaining condoms to a catholic (Shadda in #postgresql)

Hallo Andreas,

danke für den Tip, war wohl schon zu spät gestern...

Ergebnis:
EXPLAIN SELECT bringt als erste Zeile:
select type: PRIMARY
table: erste abgefagte Tabelle
type: index
possible keys: PRIMARY
key: PRIMARY
keylen: 20
....

EXPLAIN SELECT * FROM view... bringt als erste Zeile:
select type: PRIMARY
table:
type: ALL
possible keys: NULL
key: NULL
keylen: NULL
....

Da gibt es also einen Unterschied, aber ich kann das nicht deuten,
bzw. was noch wichtiger ist, wie kann ich das abstellen um diesen View
nutzen zu können?

Danke, Hans

Re: View dauert ewig - Select geht blitzschnell ?

am 01.08.2007 12:21:19 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: View dauert ewig - Select geht blitzschnell ?

am 02.08.2007 12:23:24 von Andreas Sakowski

"Andreas Kretschmer"schrieb
> begin hans.schneider8@freenet.de wrote:
>
>> Da gibt es also einen Unterschied, aber ich kann das nicht deuten,
>> bzw. was noch wichtiger ist, wie kann ich das abstellen um diesen
>> View
>> nutzen zu können?
>
> Tja, offensichtlich will MySQL vorhandene Indexe nicht nutzen.
> Vielleicht kann es das bei VIEWs noch nicht, ist ja ein
> vergleichweise
> neues Feature. Vielleicht findet sich auch noch jemand, der das
> genauer
> beantworten kann. Hilfreich wären evtl. eine Beschreibung Deiner
> beteiligten Tabellen und das dem VIEW zugrunde liegende SELECT.

Vielleicht irgend was von dem hier?

http://dev.mysql.com/doc/refman/5.0/en/view-restrictions.htm l

Interessant ist der ALGORITHM = TEMPTABLE

http://dev.mysql.com/doc/refman/5.0/en/create-view.html

Gruß
Andreas