Hallo Alwin,
VIEWs haben keinen PRIMARY KEY (und auch keine anderen Index), da eine VIEW keine echte Tabelle ist, sondern eine gespeicherte SQL-Abfrage. D.h. wird eine VIEW aufgerufen, führt MySQL die dahinter liegende (gespeicherte) SQL-Abfrage aus.
VIEWs machen die Abfragen häufig übersichtlicher und können bestimmten Usern einfach bestimmte Abfragen/Daten zur Verfügung stellen.
Bei komplexen Abfragen würde ich (bei MySQL) auf die VIEWs verzichten und die SQL-Abfragen direkt in den großen Query einbinden.
Ob und warum eine Query langsam ist, läßt sich am Besten mit EXPLAIN herausfinden.
Beispiel (das Ganze mit [ code ] [ / code ] ohne die Leerzeichen)
mysql> EXPLAIN SELECT * FROM test;
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| 1 | SIMPLE | test | ALL | NULL | NULL | NULL | NULL | 4 | |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
1 row in set (0.00 sec)
mysql>
Zeig doch mal den EXPLAIN der langsamen SQL-Abfrage.
Grüße
Thomas
--
Die SQL-Backstube
http://www.twiedmann.de/sqlbackstube/index