Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] kilka pytań, optymalizacja kilku kodów
krystian_p
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 29.06.2007

Ostrzeżenie: (0%)
-----


Jestem początkującym programistą. Mam zamiar stworzyć serwis, w którym będą tyciące materiałów dotyczących miast Polski. Na jedno miasto przypadnie średnio 5-10 artykułów... Taki ogrom informacji może niekorzystnie wpłynąć na pracę serwera.
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{ ...


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'];


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'];


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)){...



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 != '')...



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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 14:28