請讓我來舉個例子來解釋一下:每次準備交換或多次連接的數據?
您需要向客戶展示某些產品價格的實際信息。最終價格受到客戶的好評,他的位置,運送產品的方式以及當前產品的供應商的影響。
產品數量超過100億。除此之外,你應該以不同的貨幣顯示價格。最後一個問題是,供應商每天都會在他們的產品上每天發送很多價格,由於在那裏有很多職位,您可以在整天內申請(更新),而客戶不希望等到更新完全他們想知道現在的價格(我知道這是不可能的,但我的意思是 - 客戶不應該看到這樣的消息:「對不起,你必須等到所有的價格更新」)。
我想要什麼
我想將一個表ThePrice (productId, vendorId, usdPrice)
,其中每次使用一個客戶使然
select .... from ThePrice p
inner join Vendors v ...
inner join VendorsPrices vp ...
inner join UserRatio ur ...
left join ShippingRatio ...
inner join Currencies ...
inner join PriceDependsOnLocation ...
查詢分爲兩個類似的表
FirstPrice (productId, vendorId, usdPrice, user1Ratio, user2Ratio, user3Ratio, shipppingRatio, euroPrice, localPrice)
and
SecondPrice(productId, vendorId, usdPrice, user1Ratio, user2Ratio, user3Ratio, shipppingRatio, euroPrice, localPrice)
。
凡
userXRatio
- 爲客戶privelege級別的所有可能的因素。在usdPrice
上增加乘數。 shippingRatio
- 定義客戶是否需要運送。在usdPrice
上增加乘數。 euroPrice
,localPrice
- 是以不同貨幣顯示的價格與今日報價相關的價格。
這可能看起來像
if (@OneHourPassed = 1)
select ... from FirstPrice
else
select ... from SecondPrice
--not the best way but just to point out
現在,這一切參數都在每次重新計算,因爲價格可以在每一個查詢更改,當將被更新以ThePrice
表。這沒有緩存。
這意味着我不時收到鎖,因爲當客戶搜索產品時,他們也會在一整天內更新。想象一下 - 一分鐘內可能有2000個來自客戶的查詢,供應商的一兩個價格將被更新。 在同一張表中!
我想使用一個準備好的數據:雖然FirstPrice
表用於讀取,但SecondPrice
表用於寫入 - 更新價格。在某個時刻,他們互換,即在一個小時內。
而我只想知道 - 應用這個機制的機制是什麼。使用IF-s?還是有另一種更優雅的方式?
你的問題是非常廣泛的,並沒有提供很多關於你在這裏做什麼的細節。 – 2014-10-10 14:18:04
我試圖儘可能縮短,因爲人們沒有時間閱讀大量文本。你建議添加什麼細節更清晰和簡單? – notricky 2014-10-10 15:52:25