Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql подреждане по rand() проблем с производителността и решение

Първо, всички генерирайте произволна стойност от 1 до MAX(id), а не 100000000.

Тогава има поне няколко добри решения:

  1. Използвайте > не =

    SELECT items FROM tablea where status='0' and id>'$id23' LIMIT 1
    

    Създайте индекс на (status,id,items) за да направите това заявка само за индекс.

  2. Използвайте = , но просто опитайте отново с различна произволна стойност, ако не намерите попадение. Понякога ще са необходими няколко опита, но често ще отнеме само един опит. = трябва да бъде по-бърз, тъй като може да използва първичния ключ. И ако е по-бърз и го получи с един опит в 90% от времето, това може да компенсира останалите 10% от времето, когато са необходими повече от един опит. Зависи колко пропуски имате в стойностите на идентификатора.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. постоянен начин за правене на mysqli->set_charset()?

  2. Как да се свържа с MySQL на Amazon EC2 от Linux / Mac?

  3. php сървър ERR_CONNECTION_REFUSED

  4. SQL вложен ред по?

  5. Радиус/най-близки резултати - API на Google Maps