我在数据库中定义了以下表
商店表
- 店铺编号
- 店铺名称
- 所有者
- 横幅
- 标题
- 城市编号
- ShopImageId
- 积极的
城市表
- 城市编号
- 城市名称
- 国家 ID
- 区域 ID
国家表
- 国家 ID
- 国家的名字
- 区域 ID
地区
- 区域 ID
- 区域名称
商店图片
- ID
- 图片
- 店铺编号
这是我的选择查询
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
截至目前,城市表有大约 3,000,000 条记录,而 Shop 有 40,000,000 多条记录。
获取记录需要时间。所有聚集索引(主键)都已定义。
我正在尝试在 DTA(Database Tuning Advisor)的帮助下进行优化。它建议我添加以下索引
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 的所有建议吗?它还建议添加一些统计信息。
如何更好地改进我的上述查询?