Antwort #101 am: 05. Januar 2016, 11:55:07
Wer als nicht-Experte Indices anlegen möchte und keine Ahnung von Datenbanken hat, und sich nicht zutraut das in myphpadmin hinzubekommen, oder wie ich einfach nur zu faul ist manuell jeden Index einzeln zu prüfen, der kann das Script hier nehmen.
Einfach im shoproot ablegen und über den Browser aufrufen. (Danach löschen nicht vergessen!)
Das Array ist auf die eigenen Bedürfnisse anzupassen. Hier fast identisch mit dem Vorschlag im ersten Post.
Bei jedem Index wird geprüft, ob es den schon gibt, wenn nicht, wird der angelegt.
Nachdem eine Tabelle komplett abgearbeitet ist, wird die Tabelle analysiert und optimiert.
<?phpinclude('includes/application_top.php');// define array of indexes to set$arr_indices = array ( 'shipping_status' => array('language_id'), 'products' => array('products_startpage'), 'products_to_categories' => array('categories_id'), 'orders_products' => array('orders_id','products_id'), 'zones_to_geo_zones' => array('geo_zone_id'), 'tax_rates' => array('tax_zone_id'), 'products' => array('manufacturers_id'), 'specials' => array('products_id') );// loop oder arrayforeach (array_keys($arr_indices) as $table) { // check if index is there foreach ($arr_indices[$table] as $column) { $result = xtc_db_query
("SHOW INDEX FROM ".$table." WHERE Column_name='".$column."';"); if (xtc_db_num_rows
($result)>0) { // we already have an index echo "INDEX auf Tabelle ".$table." für Spalte ".$column." existiert bereits<br />\n"; } else { // we wish to create an index $result = xtc_db_query
("ALTER TABLE ".$table." ADD INDEX ".$column."(".$column.");"); if ($result) { echo "Index für Spalte ".$column." auf Tabelle ".$table." erfolgreich angelegt<br />\n"; } else { echo "FEHLER beim Anlegen von Index für Spalte ".$column." auf Tabelle ".$table."<br />\n"; } } } // make sure, indices are rewritten by DB engine if (xtc_db_query
("ANALYZE TABLE ".$table)) echo "Tabelle ".$table." analysiert<br />\n"; if (xtc_db_query
("OPTIMIZE TABLE ".$table)) echo "Tabelle ".$table." optimiert<br />\n";}?>