Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][MySQL] pobieranie rekordów z minimalną ceną z osobnej tabeli
mazyl
post
Post #1





Grupa: Zarejestrowani
Postów: 139
Pomógł: 2
Dołączył: 2.12.2011

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


Witam,

Chciałbym pobrać książki razem z ich najniższą ceną. Udało mi się to uzyskać zapytaniem:

  1. SELECT i.*, s.* FROM books AS i
  2. INNER JOIN prices AS s ON i.id = s.id_book
  3. WHERE s.price = ( SELECT (min) price FROM prices AS z WHERE z.id_book = i.id );


Jednak jest ono wykonywane wolno (około 7s przy ~5000 rekordach). Przy dodanym limicie np. 20 działa szybko, ale im większy damy OFFSET (np. 2000) tym wolniej - 3s. Czy jest jakiś inny sposób żeby uzyskać pożądany przeze mnie efekt? W finalnym zapytaniu pobieram tylko konkretne kolumny - te gwiazdki pobierające wszystko są tylko na potrzeby zadania pytani. Z góry dziękuję za odpowiedzi.

Struktura:

Tabela books
+----+---------+
| id | name |
+----+---------+
| 1 | Test |
| 2 | Testowy |
| 3 | Testuje |
+----+---------+

Tabela prices
+----+---------+-------+
| id | id_book | price |
+----+---------+-------+
| 1 | 1 | 12.00 |
| 2 | 1 | 5.00 |
| 3 | 2 | 8.00 |
| 4 | 2 | 4.00 |
| 5 | 2 | 13.00 |
| 6 | 3 | 19.00 |
+----+---------+-------+
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.09.2025 - 15:59