Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie do bazy, Różnica w szybkości ?
koala
post
Post #1





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 4.03.2005

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


Załóżmy, że mam tabelę o nazwie 'users' i ma ona np. 10 pól. Czasami potrzebne mi są wszystkie dane a czasami tylko zawartość np. 4 pól. Chciałbym sobie trochę ułatwić życie i zamiast co kawałek kodu "malować" jakieś przydługawe zapytanie do bazy, stworzyć metodę w klasie do której mógłbym się odwoływać podsyłając jej tylko np. nick użytkownika czyli $this->select($nick) i tu pojawia się pytanie o czas wykonywania zapytania.
Wiadomo, że jeśli metodzie podrzucę tylko nick użytkownika to zapytanie będzie musiało wyglądać tak :
  1. SELECT *
  2. FROM `users`
  3. ...

czyli odczyta wszystkie pola a czasami nie wszystkie dane są mi potrzebne i w tym momencie wiadomo zamiast "gwiazdki" wisuję nazwy tych potrzebnych pól.
Pytanie : czy bazie zajmie więcej czasu odczytanie wszystkich 10 pól niż 4 wybranych a jeśli tak to czy jest to jakaś znacząca różnica ? Załóżmy że w tym samym czasie np. 100 czy więcej użytkowników będzie coś "potrzebowało" od bazy, będzie to już jakiś znaczący czas ?


--------------------
php 5.1.6
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nrm
post
Post #2





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


tak, jest to roznica. w praktycznie kazdej ksiazce jaka mialem w rekach o mysql byla mowa o tym aby w miare mozliwosci NIE uzywac *.


--------------------
Go to the top of the page
+Quote Post
koala
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 4.03.2005

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


Dzięki.
Będę musiał w takim razie albo pisać całe zapytania albo trochę rozbudować tą metodę i podsyłać jej więcej danych.


--------------------
php 5.1.6
Go to the top of the page
+Quote Post
tiraeth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 789
Pomógł: 41
Dołączył: 30.10.2003
Skąd: Wrocław

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


Najlepiej zrobić tak:

  1. <?php
  2. class costam
  3. {
  4.  // ...
  5.  function ladujDane()
  6.  {
  7. $arg_list = func_get_args();
  8. $user_id = $arg_list[0];
  9. $arg_list = array_shift($arg_list);
  10.  
  11. $sql = 'SELECT userid';
  12. foreach($arg_list as $pole)
  13. {
  14.  $sql.= ', '.$pole;
  15. }
  16. $sql = ' FROM users WHERE userid = ' . $user_id .' LIMIT 1';
  17.  
  18. // Wykonujesz zapytanie z $sql i pobierasz dane
  19.  }
  20.  // ...
  21. }
  22.  
  23. // Możesz teraz np.:
  24. $user = new costam;
  25. $dane = $user->ladujDane('identyfikator_uzytkownik', 'pole1', 'pole2', 'pole3' ...);
  26. // Ile chcesz tych pol, tylko jako pierwszy argument musi byc identyfikator uzytko
    wnika
  27. ?>
Go to the top of the page
+Quote Post
koala
post
Post #5





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 4.03.2005

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


@tiraeth - wielkie dzięki !

W mojej TABLE 'users' nie mam wprawdzie pola 'id' więc będę musiał przykładzik z lekka zmienić ale to już nie problem. Jeszcze raz dziękuję.

---------------------------------------------------------------------------------------

Domyślam się, że tiraeth pisał przykład or ręki i dlatego wkradł się mały błąd a, że na pewno to rozwiązanie się komuś oprócz mnie przyda więc poprawiona wersja :
  1. <?php
  2. class costam
  3. {
  4.  // ...
  5.  function ladujDane()
  6.  {
  7. $arg_list = func_get_args();
  8. $user_id = array_shift($arg_list);
  9.  
  10. $sql = 'SELECT userid';
  11. foreach($arg_list as $pole)
  12. {
  13.  $sql.= ', '.$pole;
  14. }
  15. $sql .= ' FROM users WHERE userid = ' . $user_id .' LIMIT 1';
  16.  
  17. // Wykonujesz zapytanie z $sql i pobierasz dane
  18.  }
  19.  // ...
  20. }
  21.  
  22. // Możesz teraz np.:
  23. $user = new costam;
  24. $dane = $user->ladujDane('identyfikator_uzytkownik', 'pole1', 'pole2', 'pole3');
  25. // Ile chcesz tych pol, tylko jako pierwszy argument musi byc identyfikator uzytko
    wnika
  26. ?>


Ten post edytował koala 16.02.2006, 20:17:31


--------------------
php 5.1.6
Go to the top of the page
+Quote Post

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: 22.08.2025 - 02:41