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

MySQL избира произволен ред с JOIN от две таблици

Това е сортирането, което ви забавя. Вместо да сортирате на случаен принцип, просто изберете произволен product_db.unique_id

Във вашата заявка заменете ORDER BY RAND() с:

AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))

с помощта на >= вместо = в случай, че този unique_id е изтрит от базата данни. Не толкова случаен резултат, колкото подреждането по rand, но заявката ще се изпълни много по-бързо. Ако желаете, можете да стартирате множество заявки с = докато се намери резултат и все пак може да е доста по-бързо от сортирането на всички тези резултати.

С изрично JOIN би било:

SELECT product_db.image
FROM product_db
JOIN product_page ON product_db.unique_id = product_page.product_unique_id
WHERE product_page.page_id = 3 
AND product_db.status = 'Online' 
AND product_db.unique_id >= ROUND(RAND()*(SELECT MAX(unique_id) FROM product_db))
LIMIT 1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Данни за зареждане на MySQL:Тази команда все още не се поддържа в подготвения протокол за изявление

  2. Стъпки за инсталиране на Mysql56 на linux

  3. използвайте стойността на колоната като име на колона mysql

  4. как да получите списък с имена на схеми на бази данни на MySql с помощта на java JDBC

  5. Как да настроите MySQL ред на САМО ЧЕТЕНЕ?