Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Optymalizacja zapytań
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Witam, chciałbym jakoś "ładniej" napisać zapytania, które zaraz przedstawię, lecz najpierw struktura bazy danych:

Tabla files:
id
user_id
name
count
visible
patch

Tabla users:
id
group_id
name
password
mail
key
active
date
last

Chcę wyciągnąć 5 ostatnio dodanych plików napisałem więc zapytanie:
  1. SELECT `files`.`name`, `files`.`patch`, `files`.`count`, `users`.`name` FROM `files`, `users` WHERE `files`.`user_id` = `users`.`id` AND `files`.`visible` = 1 AND `files`.`user_id` = `users`.`id` ORDER BY `files`.`id` DESC LIMIT 5


A tutaj 5 najczęściej pobieranych

  1. SELECT `files`.`name`, `files`.`patch`, `files`.`count`, `users`.`name` FROM `files`, `users` WHERE `files`.`user_id` = `users`.`id` AND `files`.`visible` = 1 AND `files`.`user_id` = `users`.`id` ORDER BY `files`.`count` DESC LIMIT 5


Lecz wydaje mi się, że z czasem może okazać się to mało wydajne...
Jeżeli to coś zmieni to `files`.`user_id` jest powiązany z `users`.`id` a `users`.`group_`id` jest powiązany jeszcze z inną tabelą.

Ten post edytował fifi209 6.10.2009, 16:13:54
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Ja bym to tak:
  1. SELECT
  2. `files`.`name`,
  3. `files`.`patch`,
  4. `files`.`count`,
  5. `users`.`name`
  6. FROM `files`
  7. JOIN `users` ON `files`.`user_id` = `users`.`id`
  8. WHERE
  9. `files`.`visible` = 1
  10. ORDER BY `files`.`id` DESC
  11. LIMIT 5


  1. SELECT
  2. `files`.`name`,
  3. `files`.`patch`,
  4. `files`.`count`,
  5. `users`.`name`
  6. FROM `files`
  7. JOIN `users` ON `files`.`user_id` = `users`.`id`
  8. WHERE `files`.`visible` = 1
  9. ORDER BY `files`.`count` DESC
  10. LIMIT 5
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Też myślałem o takim rozwiązaniu, jednak jeżeli chodzi o szybkość to z joinem jest minimalnie wolniejsze. (nie wiem jak przy większej liczbie rekordów)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 16.09.2025 - 08:53