![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 2.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Otrzymałem informacje od firmy hostingowej że kwerenda:
select * from tabela where id='1' order by RAND() przeciaza im baze danych. Czy ktoś móglby mi podpowiedziec jak to zastąpić, żeby nie przeciazalo im baz danych? Z gory dziekuje za pomoc. Andrzej |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 189 Pomógł: 0 Dołączył: 4.07.2004 Skąd: z neostrady Ostrzeżenie: (0%) ![]() ![]() |
Wiesz... nie piszesz nic o tym ile masz danych, jakiego typu, do czego potrzebne ci jest wyciąganie w losowej kolejności... Trudno wróżyć.
Ale jeżeli masz tam mało rekordów, to czym prędzej zmień tą firmę hostingową na jakąś normalną ![]() -------------------- pozdrawiam, Adam Kubiczek
kubiczek.eu |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 107 Pomógł: 11 Dołączył: 1.08.2007 Skąd: Poland,Warsaw Ostrzeżenie: (0%) ![]() ![]() |
A czy nie możesz po prostu losować tego co potrzebujesz php'ie i co zapytania wstawić konkretną zmienną ?
-------------------- Odpowiedź na wszystko : manual,appendix. Ulubiona książka : PHP 5 for Dummies.
Studia uh ? ;-). |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 37 Pomógł: 4 Dołączył: 6.08.2006 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wiem, RAND() zostanie wykonane dla każdego rekordu w bazie, a potem szereguje je w kolejności. Tam nie powinno być czasem LIMIT 1?
-------------------- Albi's Jogger - z pamiętnika młodego programisty
Orodlin Team Member |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 923 Pomógł: 9 Dołączył: 25.10.2004 Skąd: Rzeszów - studia / Warszawa - praca Ostrzeżenie: (0%) ![]() ![]() |
Ja mysle ze to jest tak ze robisz randa zwracasz wszystki rekordy a nastepnie wyciagasz 1. Tak jak pisal @Albitos. Nie dziw sie ze admini maja pretensje takie rzeczy sa niewybaczalne.
-------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 2.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
LIMIT 1 da mi tylko jeden rekord.
Rekordów jest niewiele - około 50. Może przykład zle napisalem. Powiedzmy ze mam tabele "DOM". Każdy rekord tej tabeli ma 300 pól (mniej sie nie da). Jednym z pól w tej tabeli jest pole "kondygnacje". Chce aby na stronie wyświetlały sie wszystkie domy jednokondygnacyjne, ale w losowej kolejności po to żeby każdy dom miał taką samą szanse na obejrzenie przez użytkownika. Biorę wiec kwerende: select * from DOM where kondygnacje='1' order by RAND(); Otrzymuje wynik html: 1)DOM CHABROWY kondygnacje: 1 powierzchnia: 240 m2 dach: jednospadowy 2)DOM KURANT kondygnacje: 2 powierzchnia: 210 m2 dach: mansardowy 3)... itp. itd. Czy takie wywołanie kwerendy przy tak malej liczbie rekordów może przeciążyć bazę danych? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 24.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
praktycznie wogole nie obciaza bazy.. a losuje prawie tak samo ;] |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 121 Pomógł: 15 Dołączył: 19.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
A masz utworzone indeksy dla pol wg ktorych przeszukujesz tabele?
Powiedzmy ze mam tabele "DOM". Każdy rekord tej tabeli ma 300 pól (mniej sie nie da). Jednym z pól w tej tabeli jest pole "kondygnacje". Wydaje mi sie jednak ze glowna przyczyna Twoich problemow jest duza ilosc pol w tej tabeli. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 01:09 |