Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja tabeli w bazie danych!
Forum PHP.pl > Forum > Bazy danych > MySQL
akurczyk
Ostatnio zauważyłem że po edycji bazy danych z poziomu strony (w phpmyadminie to nie występuje) w phpmyadmin do do opisu tabeli dochodzą dwie linijki nadmiar i optymalizacja tabeli gdy kliknę na optymalizacja tabeli nadmiar znika.
Czy opłaca się optymalizować tabelę przy każdej edycji dodawaniu lub usuwaniu rekordów z db??
Czy może są inne metody żeby zapobiegać bałaganowi w db (w phpmyadminie to nie występuje)questionmark.gif
Proszę o pomoc
phpion
Nie szukaj obejścia problemu tylko go rozwiąż. Prawdopodobnie jakiś skrypt robi ten bałagan - przejrzyj sobie źródła i znajdź paskudnika.
Jeżeli chodzi o optymalizację tabeli po każdej operacji: jeżeli tylko ty to robisz to spoko ale jeśli to baza danych jakiegoś serwisu to nie radzę smile.gif Ogólnie zdecydowanie lepiej wykonywać to systematycznie np. w nocy dodając zadanie do crona.
akurczyk
Dołożę zadanie do crona.
Czy to zamieszanie w db może być spowodowane nie cytowaniem nagłówków tabeli tak jak robi to phpmyadmin albo usuwanie nie istnoiejącego rekordu?questionmark.gif
phpion
Cytat(akurczyk @ 30.09.2008, 20:54:28 ) *
Dołożę zadanie do crona.

Słusznie.

Cytat(akurczyk @ 30.09.2008, 20:54:28 ) *
Czy to zamieszanie w db może być spowodowane nie cytowaniem nagłówków tabeli tak jak robi to phpmyadmin albo usuwanie nie istnoiejącego rekordu?questionmark.gif

Nie.
akurczyk
Mam pomysł może podam ci kawałek kodu który najbardziej bruździ mi w db, a ty go przeanalizujesz?questionmark.gif
Kod:
  1. <?php
  2. ...
  3.            if($_GET['dodaj'] == "tak") {
  4.                $wykonaj_zapytanie_ulubione = mysql_query("SELECT * FROM ulubione WHERE uzytkownik='{$_SESSION['id']}' AND porada='".addslashes($_GET['porada'])."'");
  5.                if(mysql_num_rows($wykonaj_zapytanie_ulubione) == 0) {
  6.                    mysql_query("INSERT INTO ulubione (id, uzytkownik, porada) VALUES (NULL, '{$_SESSION['id']}', '".addslashes($_GET['porada'])."')");
  7.                }
  8.            } else {
  9.                if($_GET['usun'] == "tak") {
  10.                    mysql_query("DELETE FROM ulubione WHERE uzytkownik='{$_SESSION['id']}' AND porada='".addslashes($_GET['porada'])."'");
  11.                }
  12.            }
  13.            $wiersz = mysql_fetch_array($wykonaj_zapytanie);
  14.            echo "<table border=\"1\" width=\"100%\">";
  15.            echo "<tr>";
  16.            echo "<td>";
  17.            echo "<b>[".htmlspecialchars($wiersz['jezyk'])."] ".htmlspecialchars($wiersz['tytul'])."</b>";
  18.            echo "</td>";
  19.            echo "</tr>";
  20.            echo "<tr>";
  21.            echo "<td>";
  22.            echo "<div align=\"right\">";
  23.            $wykonaj_zapytanie_ulubione = mysql_query("SELECT * FROM ulubione WHERE uzytkownik='{$_SESSION['id']}' AND porada='".addslashes($_GET['porada'])."'");
  24.            if(mysql_num_rows($wykonaj_zapytanie_ulubione) == 0) {
  25.                echo "<a href=\"?porada=".addslashes($_GET['porada'])."&dodaj=tak\">Dodaj do ulubionych</a>";
  26.            } else {
  27.                echo "<a href=\"?porada=".addslashes($_GET['porada'])."&usun=tak\">Usuń z ulubionych</a>";
  28.            }
  29.            echo "</div>";
  30. ...
  31. ?>
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.