Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql order by rand() problem z wydajnością i rozwiązanie

Po pierwsze, wszystkie generują losową wartość od 1 do MAX(id), a nie 100000000.

Jest też co najmniej kilka dobrych rozwiązań:

  1. Użyj > nie =

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

    Utwórz indeks na (status,id,items) aby to zapytanie było tylko indeksem.

  2. Użyj = , ale po prostu spróbuj ponownie z inną losową wartością, jeśli nie znajdziesz trafienia. Czasami wymaga to kilku prób, ale często wystarczy jedna próba. = powinien być szybszy, ponieważ może używać klucza podstawowego. A jeśli jest szybszy i daje to za jednym podejściem w 90% przypadków, może to zrekompensować pozostałe 10% czasu, gdy wymaga więcej niż jednej próby. Zależy od tego, ile masz luk w wartościach id.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak dodać mode=mysql do wbudowanej bazy danych H2 w Spring Boot 1.4.1 dla @DataJpaTest?

  2. ciąg wybranych wartości oddzielony przecinkami w mysql

  3. Jak zainstalować pakiet MySQLdb? (ImportError:brak modułu o nazwie setuptools)

  4. Jak uciec dosłowny znak procentu, gdy włączona jest opcja NO_BACKSLASH_ESCAPES?

  5. Oblicz percentyl w MySQL na podstawie sum