SELECT t.*
FROM table t
WHERE t.city = example
ORDER by RAND()
Limit 10;
根据返回的行数,可能会有进一步的优化。 例如,一种方法是:
SELECT t.*
FROM (SELECT t.*, RAND() as rnd, (@rn := @rn + 1) as rn
FROM table t CROSS JOIN
(SELECT @rn := 0) params
WHERE t.city = example
) t
WHERE rnd < (100 / @rn) -- get a sample of about 100 records
ORDER BY rnd
LIMIT 10;
1条答案
按热度按时间3phpmpom1#
您可以通过在
table(city)
.我认为使用
=
而不是like
:根据返回的行数,可能会有进一步的优化。
例如,一种方法是:
它使用变量和
WHERE
排序前将行数限制在100行左右。那种应该很快。