Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przeciazanie bazy danych
andszym
post
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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
akubiczek
post
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ą smile.gif


--------------------
pozdrawiam, Adam Kubiczek
kubiczek.eu
Go to the top of the page
+Quote Post
John
post
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 ? ;-).
Go to the top of the page
+Quote Post
Albitos
post
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
Go to the top of the page
+Quote Post
SongoQ
post
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.


--------------------
Go to the top of the page
+Quote Post
andszym
post
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?
Go to the top of the page
+Quote Post
adamx
post
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 24.07.2007

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


  1. <?php
  2. $offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `produkty` ");
  3. $offset_row = mysql_fetch_object( $offset_result ); 
  4. $offset = $offset_row->offset;
  5. $dane['res_produkty'] = mysql_query( " SELECT * FROM `produkty` where ".$wh." LIMIT $offset, 6 " );
  6. ?>

praktycznie wogole nie obciaza bazy.. a losuje prawie tak samo ;]
Go to the top of the page
+Quote Post
osiris
post
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?

Cytat(andszym @ 3.08.2007, 23:17:26 ) *
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.
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: 20.08.2025 - 01:09