MySQL queries: Difference between revisions

From Ilianko
Created page with "===Избор на произволен ред:=== Най-елементарен, но бавен SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1; Сравнително бъ..."
 
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
===Избор на произволен ред:===
===Избор на произволен ред:===


Най-елементарен, но бавен
Най-елементарен, но бавен.
  SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;
  SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;


Сравнително бърз
Сравнително бърз, ако id полетата са уникални последователни числа.
  SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
  SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;


Най-бърз метод
Най-бърз метод. Влючва PHP код.
  $offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
  $offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
  $offset_row = mysql_fetch_object( $offset_result );  
  $offset_row = mysql_fetch_object( $offset_result );  
  $offset = $offset_row->offset;
  $offset = $offset_row->offset;
  $result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );
  $result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );
===Търсене на дума===

Latest revision as of 08:16, 5 August 2012

Избор на произволен ред:

Най-елементарен, но бавен.

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;

Сравнително бърз, ако id полетата са уникални последователни числа.

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

Най-бърз метод. Влючва PHP код.

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");
$offset_row = mysql_fetch_object( $offset_result ); 
$offset = $offset_row->offset;
$result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );

Търсене на дума