Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak trzymać miasta w osobnej tabeli i umozliwiść sortowanie według miast w innej tabeli, Tabela 'users' którą chce sortować po mieście trzymane w tab.
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Witam,

Jak trzymać miasta w bazie. Otóż mam tabele 'users', każdy użytkownik ma swoje miasto. Pytanie czy poniższe rozwiązanie jest optymalne.

Chce zrobić tak:
Utworzyć tabelę 'cities' z polami:
id | city

id - zawiera nazwe miasta bez polskich znaków i będzie kluczem dla każdego miasta
city - zawiera poprawną nazwę miasta z polskimi znakami


Tabela 'users' w polu 'cities_id' będzie zawierać włąśnie klucz obcy miasta (czyli wartość z pola 'id' z tabeli 'cities')
Dlaczego jako klucza nie chce używać liczby INT, ponieważ dzięki klucza w formie jak wyżej można będzie sortować użytkowników po mieście.
W przypadku klucza typu INT sortowanie odpada. Gdyż w polu 'cities_id' w tabeli 'users' nie ma możliwości sortowania w ten sposób po mieście.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sajrox
post
Post #2





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

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


Racja ten WHERE nie jest tam potrzebny, Mały błąd (IMG:style_emoticons/default/smile.gif)

Właśnie przeprowadziłem testy;
Do bazy users dodałem około 3 mln użytkowników, każdy ma jakieś miasto
Miast jest ponad 100.

Teraz zapytanie SQL:
  1. SELECT `u`.`name`, `u`.`surname`, `c`.`city` FROM `users` AS `u` INNER JOIN `cities` AS `c` ON u.id_city=c.id_city ORDER BY `c`.`city` DESC LIMIT 20


Dodałem idexy na pola:
id_city w tabeli users
city w tabeli cities

Zapytanie wykonuje się powyżej 30 sekund, czyli powyżej normy :/

Może jakieś pomysły ?

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: 11.10.2025 - 17:45