網頁返回樣本行應顯示從PostgreSQL數據庫特定產品類別的一個產品形象。 該圖像應在每25秒後自動更改爲其他圖像。返回的產品可能是隨機的或按某種順序排列的。某些產品可能會丟失,並且一些重複的但標準中的大部分產品都應返回。 當前可用的圖像計數可能樣本檢索之間稍微改變如何從數據庫中逐個
目前以下碼被用於其每25秒後執行。 這需要兩個查詢數據庫:一個用於計數其可slwo和第二對 單個圖像檢索。在兩種情況下,子句都是重複的,在實際應用中,子句非常大,改變它需要在兩個地方進行更改。
如何提高這使單個查詢返回的樣品? 列類型不能更改,使用自然主鍵。如果有幫助,可以添加其他列,觸發器,索引,序列。
ASP.NET/Mono MVC3,Npgsql的被使用。
$count = select count(*)
from products
where prodtype=$sometype and productid in (select productid from images);
$random = next random integer between 0 .. $count-1;
-- $productsample is result: desired sample product
$productsample = select product
from products
where prodtype=$sometype and productid in (select productid from images)
offset $random
limit 1;
create table products (productid char(20) primary key,
prodtype char(10) references producttype
);
create table images(
id serial primary key,
productid char(20) references products,
mainimage bool
);
謝謝。答案中的鏈接描述這很昂貴:它將檢索所有行並在內存中排序。如果這是PostgreSql中最有效的方法? – Andrus