1. SQL
Podstawą jest dobrze stworzona struktura bazy danych. Do odpowiednich pól, wyznacz ich typ. Dla daty ustaw typ danych "DATE", dla liczb typ "INT", a dla słów, które mają poniżej 250 znaków użyj typu "VARCHAR" itd.
- Nie używaj operatora NOT IN – być może składnia jest nieco mniej intuicyjna, aczkolwiek zdecydowanie wydajniejsza jest klauzula NOT EXISTS.
- Unikaj zapytań z użyciem DISTINCT. Lepiej i wydajniej jest użyć GROUP BY.
- Nie używaj operatorów nierówności: "<>", "=!". O wiele korzystniej i wydajniej jest włączyć nawet dużą listę niż wykluczyć z zapytania pojedyncze rekordy.
- Poprzedzaj nazwę tabeli właścicielem tabeli w części FROM zapytania. Unikniesz dzięki temu dwuznaczności i kłopotów.
- W poleceniach INSERT zawsze jawnie wymieniaj listę kolumn. W przeciwnym wypadku każda zmiana struktury tabeli będzie generować błędy
- Funkcja COUNT - w każdym wypadku lepiej będzie użyć COUNT(1) niż COUNT(*)
- Przy łączeniu wielu tabel zwróć uwagę na kolejność występowania złączeń. Zawsze najkorzystniej będzie ograniczyć jak największą ilość wierszy w pierwszym złączeniu.
- Nie używaj funkcji SQL w części WHERE zapytania. Rozważ dodanie kolumny z wartością wynikową działania funkcji, a jeżeli użycie funkcji jest niezbędne, to korzystaj z indeksów bazujących na funkcjach (function-based indexes).
- Staraj się też nie używać symboli wieloznacznych na początku szukanego słowa klauzuli WHERE w wyrażeniu LIKE. Czyli dużo wydajniejsze będzie wyszukiwanie nazwisko LIKE ‘K%owalski’ niż nazwisko LIKE ‘%owalski’, nawet jeżeli na tym polu jest założony jakiś indeks, to nie zostanie on wykorzystany poprawnie .
- Jeśli tworzysz wyszukiwarkę, wyszukuj w trybie pełno tekstowym, przy użyciu MATCH oraz AGAINST. Jest to o wiele szybsze niż operator LIKE.
- Bez * przy zapytaniach. Zawsze warto w zapytaniu zaznaczyć, jakie kolumny
chcemy otrzymać. Baza danych nie będzie musiała sprawdzać jakie
kolumny są w bazie danych, co zmniejszy czas rezultatu. Zasada ta odnosi
się do pkt. 6.
- Nie wykonuj niepotrzebnych operacji na danych . Nie zabijaj serwera stosując takie zapytanie: SELECT id FROM MyTable WHERE liczba-20 > 100; Zamiast tego, użyj SELECT id FROM MyTable WHERE liczba > 120; Rezultat będzie ten sam, a baza danych nie będzie musiała liczyć, dla każdego rekordu.
2. PHP
- Jeśli możesz, zainstaluj na serwerze rozszerzenie XDebug, dzięki czemu będziesz mógł dokładnie badać czas generowania strony, zużycie pamięci ram. W modyfikuje funkcję var_dump, która w przejrzysty sposób pokazuje zawartość.
- Zainstaluj na serwerze akceleratory: XCache, eAccelerator, Zend Optimizer
- Nie używaj cudzysłowu w deklarowaniu stringa. Czyli porzuć $String = "Moja zmienna zmienna = $zmienna"; na $String = 'Moja zmienna zmienna = '.$zmienna. Parser nie będzie musiał przeszukiwać tekstu, w celu znalezienia zmiennych w nim zamieszczonych.
- Nie używaj @ który zagłusza wyświetlanie błędów.
- Preinkrementacja jest szybsza od inkrementacji , czyli ++$zmienna jest szybsze od $zmienna++;
- Oszczędzaj procesor. Wylicz stałe równania: setcookie('cookie', 1, 60*60*24); zamień na setcookie('cookie', 1, 86400);
- Cachuj wyniki z bazy danych, jeśli często się nie zmieniają.
- Usuwaj jednorazowe zmienne, by zwolnić pamięć - unset($zmienna);
- Isset jest szybsze od str_len, czyli:
if(strlen($tekst)<15) { echo “Tekst jest za krótki”; } //wolne
if (!isset($tekst{15})) { echo “Tekst jest za krótki”; } //szybsze
- Praktyki:
-
// wolne
-
// szybsze
-
-
// wolne
-
// szybsze
-
-
// wolne
-
// szybsze
-
-
//wolne
-
include("plik.php");
-
//szybsze
-
include("./plik.php");
-
-
//wolne
-
for ($i=0; $i<sizeof($tablica); $i++) { ... }
-
//szybsze
-
for ($i=0; $i<$rozmiar; $i++) { ... }
-
-
//wolne
-
echo $a.$b.$c;
-
//szybsze
-
echo $a,$b,$c;
-
-
-
// Dobrze
-
// Źle
-
// Brzydko
-
2. Serwer
- Zainstaluj sobie dodatki: Firebug, YSlow, PageSpeed
- Użyj serwera CDN (Content delivery network).
- Zmniejsz ilość zapytań na serwer. Możesz w tym celu
użyć:
• CSS Sprite
• Data URI scheme
- Zmniejsz jakość grafiki na serwerze. Możesz użyć do tego SmushIt
- Kompresuj kod JavaScript, takimi narzędziami jak JavaScriptCompress
- Kompresuj CSS i JavaScript do GnuZip (*.gz). Zmniejszy to rozmiar wysyłanych danych.
- Zarządzaj cache przeglądarki. Wysyłaj nagłówki jak 304: Not Modified Header, gdy plik nie został zmieniony
- Wysyłaj nagłówek ETag
- Możesz użyć ajaxa do wysyłania danych POST. Teraz nawet komórki mają dobry silnik JavaScript, to więc nie powinno być żadnych problemów.
- Cachuj zapytania Ajax.
- Zamieszcz odnośnik do skryptu JavaScript na dole strony (w stopce). Zmniejszy to czas wyświetlenia strony.
- Jak masz mocny procesor na serwerze, a mało możesz wykorzystać łącza, skorzystaj z kompresowania strony
- Nie odkrywaj koła od nowa. Jest wiele wbudowanych funkcji, klas itp. Warto sobie je wszystkie przejrzeć.
- Jeśli używasz JQuery, możesz umieścić link do biblioteki od google-> http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js . Biblioteka jest umeiszczona na serwerach CDN oraz jest możliwość, że użytkownik wcześniej pobrał bibliotekę i ma ją w cache.

