![]() Mailinglisten-Archive |
Hallo, ich hab hier einen View aus dem ich von mehreren Feldern die eindeutigen Werte ermitteln muss. (eindeutige Werte f�r DropDown-Felder auf der Website) Der View selbst liefert rund 500k Datens�tze. Bei jedem Zugriff dauert es ca. 9 Sekunden. Die Tabellen wurden damals als INNODB erstellt obwohl MYISAM auch gehen w�rde. Eine Test-Umstellung auf MyISAM hat wenig Erfolg gebracht. Da ich von massig Feldern die eindeutigen Werte ben�tige, ist die Wartezeit nicht mehr tragbar. Beim 2. Aufruf des Skripts werden nat�rlich die Daten schneller ermittelt, da MySQL die Daten cached. Nun stellt sich die Frage wie ich das ganze optimieren kann?! - Entweder alle m�glichen Felder indizieren - das Ergebnis des Views in eine Tabelle speichern und diese auslesen Mit folgendem SQL greife ich f�r jedes einzelne Feld auf den View zu: --- select distinct Feldnamexyz from view_art_umsatz; --- Der View hat folgenden Aufbau (export von phpMyAdmin): --- CREATE VIEW `view_art_umsatz` AS select `kl_firmatyp`.`kltyp_bez` AS `kltyp_bez`, `kl_firma`.`kl_nr` AS `kl_nr`, `kl_firma`.`kl_firma` AS `kl_firma`, `kl_firma`.`kl_synonym` AS `kl_synonym`, `kl_rechnungsgruppe`.`rechgrp_bez` AS `rechgrp_bez`, `art_artikelpreisgruppe`.`artpg_bez` AS `artpg_bez`, `vk_auftrag`.`at_typ` AS `at_typ`, `vk_auftragstatus`.`atst_bez` AS `atst_bez`, `vk_auftrag`.`at_lieferscheinnr` AS `at_lieferscheinnr`, `vk_auftrag`.`at_lieferscheinam` AS `at_lieferscheinam`, year(`vk_auftrag`.`at_lieferscheinam`) AS `at_lieferschein_jahr`, quarter(`vk_auftrag`.`at_lieferscheinam`) AS `at_lieferschein_quartal`, month(`vk_auftrag`.`at_lieferscheinam`) AS `at_lieferschein_monat`, week(`vk_auftrag`.`at_lieferscheinam`,1) AS `at_lieferschein_kalenderwoche`, dayofmonth(`vk_auftrag`.`at_lieferscheinam`) AS `at_lieferschein_monatstag`, `vk_auftrag`.`at_rechnungnr` AS `at_rechnungnr`, `vk_auftrag`.`at_rechnungam` AS `at_rechnungam`, year(`vk_auftrag`.`at_rechnungam`) AS `at_rechnung_jahr`, quarter(`vk_auftrag`.`at_rechnungam`) AS `at_rechnung_quartal`, month(`vk_auftrag`.`at_rechnungam`) AS `at_rechnung_monat`, week(`vk_auftrag`.`at_rechnungam`,1) AS `at_rechnung_kalenderwoche`, dayofmonth(`vk_auftrag`.`at_rechnungam`) AS `at_rechnung_monatstag`, round(`vk_auftrag`.`at_bezahlt`,2) AS `at_bezahlt`, `vk_auftrag`.`at_bezahltam` AS `at_bezahltam`, `vk_auftragartikel`.`atart_art_nr` AS `atart_art_nr`, `vk_auftragartikel`.`atart_art_bez` AS `atart_art_bez`, round(`vk_auftragartikel`.`atart_menge`,2) AS `atart_menge`, round(`vk_auftragartikel`.`atart_art_inhalt`,2) AS `atart_art_inhalt`, round(`vk_auftragartikel`.`atart_preis`,2) AS `atart_preis`, round((`vk_auftragartikel`.`atart_art_inhalt` * `vk_auftragartikel`.`atart_preis`),2) AS `atart_kistenpreis`, round(`art_ust`.`ust_prozentsatz`,2) AS `ust_prozentsatz`,round((((`vk_auftragartikel`.`atart_art_inhalt` * `vk_auftragartikel`.`atart_menge`) * `vk_auftragartikel`.`atart_preis`) * if((`vk_auftrag`.`atst_id` = 6),-(1),1)),2) AS `atart_netto`, round(((((`vk_auftragartikel`.`atart_art_inhalt` * `vk_auftragartikel`.`atart_menge`) * `vk_auftragartikel`.`atart_preis`) * (`art_ust`. `ust_prozentsatz` / 100)) * if((`vk_auftrag`.`atst_id` = 6),-(1),1)),2) AS `atart_mwstbetrag`, round(((((`vk_auftragartikel`.`atart_art_inhalt` * `vk_auftragartikel`.`atart_menge`) * `vk_auftragartikel`.`atart_preis`) * (1 + (`art_ust`. `ust_prozentsatz` / 100))) * if((`vk_auftrag`.`atst_id` = 6),-(1),1)),2) AS `atart_brutto` from (`kl_firmatyp` join ((((((`kl_firma` left join `kl_rechnungsgruppe` on((`kl_firma`.`rechgrp_id` = `kl_rechnungsgruppe`.`rechgrp_id`))) left join `art_artikelpreisgruppe` on((`kl_firma`.`artpg_id` = `art_artikelpreisgruppe`.`artpg_id`))) left join `vk_auftrag` on((`kl_firma`.`kl_id` = `vk_auftrag`.`kl_id`))) left join `vk_auftragstatus` on((`vk_auftrag`.`atst_id` = `vk_auftragstatus`.`atst_id`))) left join `vk_auftragartikel` on((`vk_auftrag`.`at_id` = `vk_auftragartikel`.`at_id`))) left join `art_ust` on((`vk_auftragartikel`.`ust_id` = `art_ust`.`ust_id`)))) where (`kl_firma`.`kltyp_id` = `kl_firmatyp`.`kltyp_id`); --- Felder von denen ich die eindeutigen Werte ben�tige: --- "kltyp_bez", "rechgrp_bez", "artpg_bez", "at_typ", "atst_bez", "at_lieferschein_jahr", "at_lieferschein_quartal", "at_lieferschein_monat", "at_lieferschein_kalenderwoche", "at_lieferschein_monatstag", "at_rechnung_jahr", "at_rechnung_quartal", "at_rechnung_monat", "at_rechnung_kalenderwoche", "at_rechnung_monatstag", "at_bezahlt", "ust_prozentsatz" --- F�r jeden Hinweis dankbar. Mit freundlichen Gr��en Mario Batz
php::bar PHP Wiki - Listenarchive