Mam wiele materiałów dotyczących optymalizacji kodu PHP, jednak nie do końca znam się na stworzeniu kodu, dzięki któremu praca bazy danych będzie sprawniejsza. Przygotowałem zatem kilka przykładów i proszę Was, byście poradzili mi w jaki sposób mam przerobić dany kod, by serwis działał szybciej.
1. Chcę sprawdzić, czy istnieje rekord o 'id' równym liczbie 4:
Kod
$a = mysql_fetch_array(mysql_query("SELECT * FROM tabela WHERE id='4'"));
if($a['id'] == ''){ echo'brak'; } else{ ...
if($a['id'] == ''){ echo'brak'; } else{ ...
2. Chcę wyciągnąć kilka pól z danego rekordu:
Kod
$a = mysql_fetch_array(mysql_query("SELECT pole, pole2 FROM tabela WHERE id='$id'"));
echo $a['pole'];
echo $a['pole2'];
echo $a['pole'];
echo $a['pole2'];
3. Chcę wyciągnąć tylko jedno pole z danego rekordu:
Kod
$a = mysql_fetch_array(mysql_query("SELECT pole FROM tabela WHERE id='$id'"));
echo $a['pole'];
echo $a['pole'];
4. Chcę policzyć, ile jest rekordów, w których 'pole' jest równe liczbie 4:
Kod
$a = mysql_result(mysql_query("SELECT COUNT(*) FROM tabela WHERE pole='4'"),'0');
5. Chcę stworzyć listę rekordów, w których 'pole' jest równe liczbie 4:
Kod
$a = mysql_query("SELECT * FROM tabela WHERE pole='4'");
while($r = mysql_fetch_array($a)){...
while($r = mysql_fetch_array($a)){...
Tu się zaczyna problem. Czytałem o niejakich indexach. Jak się tworzy indexy w programie PHPMyAdmin dla danego pola? Jakie trzeba wysłać zapytania, żeby utworzyć te indexy? Jakich zapytań trzeba użyć, by skorzystać z indexów?
Ma to jakiś związek z tym, co jest poniżej (jest takie coś w PHPMyAdmin)?
Nazwa klucza Typ Moc Działanie Pole
PRIMARY PRIMARY 1 Edycja Usunięcie id
To jest dla mnie bardzo ważny kod, bo jeśli będzie np. 10.000 rekordów i będę chciał w szybki sposó wyciągnąć tylko 2 w liście to może wystąpić problem...
6. Chcę wyciągnąć id rekordu, w którym jest największy id:
Kod
$a = mysql_fetch_array(mysql_query("SELECT pole FROM tabela ORDER BY id DESC LIMIT 0,1"));
7. Chcę edytować wartość danego pola (np. 'pole2') w rekordach, w których 'pole' jest równe liczbie 4:
Kod
mysql_query("UPDATE tabela SET pole2='tekst' WHERE pole='4'");
tu chyba też kłamiają się indexy... Ta sama zasada będzie występować podczas usuwania rekordów z wyznaczonymi wartościami?
8. czy warto używać opcji NULL?
strona działa szybciej, jeśli w zapytaniu użyje się kodu:
pole IS NULL
czy, jeśli użyje się:
pole=''
no i przy okazji chciałbym wiedzieć, czy w kodzie PHP szybciej działa kod:
Kod
if($a <> '')...
czy
if($a != '')...
czy
if($a != '')...
9. Dodatkowo chciałbym wiedzieć, czy warto przed includowaniem pliku sprawdzać, czy on w ogóle istnieje, czy lepiej, bo szybciej, użyć od razu takiego kodu:
@include('plik.php')
--
Nie prawda że jest czytelniej?
~kwiateusz