Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Optymalizacja zapytania
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witajcie!
Jestem w trakcie przepisywania swoego CMSu aby używał PDO i był bezpieczniejszy. Natrafiłem po drodze na blok kodu opisany komentarzem "do optymalizacji" ale jak nie wiedziałem podczas pisania jak zoptymalizowac zapytanie tak nie wiem teraz winksmiley.jpg

  1. <?php
  2. $is_modified = $this->mysql_core->array_reply("SELECT `mod_counter` FROM `news` WHERE `id` = '$id' LIMIT 1", MYSQL_ASSOC, true);
  3. if($is_modified["mod_counter"] <= 0)
  4. {
  5. $data = $this->mysql_core->array_reply("SELECT '-1' AS `frname`, `news`.`date_add`, `news`.`tags`, '-1' AS `date_mod`, `news`.`mod_counter`, `news`.`expiring`, `news`.`comments`
  6. FROM `news`
  7. WHERE `id` = '$id'
  8. LIMIT 1", MYSQL_ASSOC, true);
  9. }
  10. else
  11. {
  12. $data = $this->mysql_core->array_reply("SELECT `users`.`frname`, `news`.`tags`, `news`.`date_add`, `news`.`date_mod`, `news`.`mod_counter`, `news`.`expiring`, `news`.`comments`
  13. FROM `news` , `users`
  14. WHERE `news`.`user_mod` = `users`.`id`
  15. AND `news`.`id` = '$id'
  16. LIMIT 1", MYSQL_ASSOC, true);
  17. }?>


Czy ktoś ma pomysł jak to upakować w jedno zapytanie zamiast 3? ;]
W gwoli objaśnienia - array_reply() zwraca wielowymiarową tablicę z kolejnymi wierszami uzyskanymi z zapytania.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

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


Możesz wykorzystać procedury i tam się pobawić, albo pokombinować z podzapytaniami i instrukcjami warunkowymi (goto: manual)


--------------------
scriptun.com. Startup z poradnikami do gier ttp.zone i ttpzone.pl
Go to the top of the page
+Quote Post
kiler129
post
Post #3





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Pierwszy sposób odpada - nie wszystkie bazy obsługuje się tak samo pod tym względem a ja mam wymóg MySQL+PgSQL+SQLite+FireBird


Cytat(Daimos @ 5.11.2010, 17:55:15 ) *
(...)podzapytaniami i instrukcjami warunkowymi (goto: manual)

Tam w pierwszej kolejności się udałem jednakże po próbach odrzekłem "pier..." i zostawiłem winksmiley.jpg
Problem teraz wrócił i postanowiłem zapytać.


--------------------
flexiCMS v2 [|||||||+--] 75% done
Go to the top of the page
+Quote Post
zend
post
Post #4





Grupa: Zarejestrowani
Postów: 580
Pomógł: 85
Dołączył: 25.03.2010
Skąd: Skrzyszów :)

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


1) nie 3, a 2 zapytania
2) gdyby nie
Cytat
MySQL+PgSQL+SQLite+FireBird
to mysql if i miksujesz 2 i 3 zapytanie
3) czemu chcesz to optymalizować skoro działa dobrze (zakładając oczywiście że kod nie jest wykonywany w pętli)?
Go to the top of the page
+Quote Post
kiler129
post
Post #5





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Dlaczego? Nie lubie dirty code i omijania problemów smile.gif


--------------------
flexiCMS v2 [|||||||+--] 75% done
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: 19.08.2025 - 03:47