考慮下面的代碼片段:如何優化這些查詢?
$beat = date('B'); // 1 beat = 86.4 seconds, 1000 beats = 1 day
$total = 'SELECT COUNT(id) FROM ads WHERE featured = 1;'; // number of featured ads
$current = 'SELECT * FROM ads WHERE featured = 1 ORDER BY id ASC LIMIT 1 OFFSET ' . ($beat % $total) . ';'; // current featured ad
基本上這個週期低谷的所有功能的廣告給他們中的每一個節拍,他們將給予特別的亮點(86.4秒)窗口,例如:
$beat $total $current
0 3 0
1 3 1
2 3 2
3 3 0
4 3 1
5 3 2
6 3 0
7 3 1
這工作得很好,但我想知道是否有可能消除$總查詢的需要,並使用一個查詢完成相同的操作。
我沒有看到無論如何不使用子查詢,但仍然,我想聽聽你的意見。
不應該最後一個查詢只選擇其中特徵= 1的那個? – 2009-09-02 13:35:40
鑑於數據集,你可以用3替換$ total。 也許你想給一個更多樣化的例子? –
@lanut:對不起,現在修好了。 –