我已經在數據庫中按照DTA的建議添加非結束索引會提高性能嗎?
表鋪
- ShopId
- SHOPNAME
- 所有者定義的以下表
- 橫幅
- 部首
- CityId
- ShopImageId
- 活動
市表
- CityId
- CITYNAME
- CountryId
- RegionId
表國家
- CountryId
- 國家或地區名稱
- RegionId
REGION
- RegionId
- 個RegionName
ShopImages
- 編號
- 圖片
- ShopId
這裏是我的選擇查詢
SELECT ShopName, Owner, CityName, CountryName,RegionName
FROM Shop S
INNER JOIN City CT ON CT.CityId=S.CityId
INNER JOIN Country CO ON CO.CountryId=CT.CountryId
INNER JOIN Region R ON CT.RegionId=R.RegionId
LEFT OUTER JOIN ShopImages SI ON S.ShopImageId=SI.Id
WHERE S.Banner like '%restaurant%' OR S.Description like '%restaurant%'
AND S.CityId=10 AND S.Active=1
截至目前市表已有約300萬條記錄&店鋪有 40,000,000條記錄。
獲取記錄需要時間。所有的聚集索引(主鍵)都已經定義好了。
我想在DTA(數據庫優化顧問)的幫助下進行優化。 它建議我加入以下指標
CREATE NONCLUSTERED INDEX
[_dta_index_CITY_9_2098106515__K9_K20_K1_K2] ON [dbo].[CITY]
(
[COUNTRYID] ASC,
[REGIONID] ASC,
[CITYID] ASC,
[CITYNAME] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF)
ON [PRIMARY]
是否值得加入這個指標?我可以從DTA採取所有建議嗎?它建議增加一些統計數字。
怎麼樣能改善我的上面的查詢?
'INNER JOIN Region R Region.RegionId = R.RegionId'?你確定這是正確的嗎? – 2013-02-23 14:09:27
@JoachimIsaksson,謝謝你。我現在更新了。錯字錯誤:) – Billa 2013-02-23 14:10:43
不過,我會假設'內部聯接區域R在CT.RegionId = R.RegionId'上:) – 2013-02-23 14:11:19