ورود

View Full Version : سوال: افزایش سرعت اجرای SELECT بصورت تصادفی (Random)



Jason.Bourne
چهارشنبه 04 فروردین 1389, 04:27 صبح
از کوئری زیر برای انتخاب سطری (بصورت تصادفی) از جدولی که 12000 رکورد دارد استفاده میکنم.


SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;اما زمانی که برای اجرای این کوئری لازم هست حدود 2 ثانیه هست. آیا میتوانم این کوئری را برای افزایش سرعت بهینه کنم؟!

funpatogh
یک شنبه 08 فروردین 1389, 14:21 عصر
همه فیلد های رکوردت رو لازم داری که از * استفاده کردی؟
اگه همش لازم نیست فقط فیلد هات رو بنویس

Jason.Bourne
یک شنبه 08 فروردین 1389, 14:26 عصر
استفاده کردن یا نکردن از * در این کوئری در سرعت اون تاثیر زیادی نداره. در واقع نکته چالش برانگیز ، RAND هست.

taknegaar
پنج شنبه 19 فروردین 1389, 17:07 عصر
SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table`;

بعد

SELECT * FROM `table` LIMIT $offset, 1;