sql - 子查询会降低查询性能
问题描述
我有一个查询,其中有两个部分“搜索第 1 节”和“搜索第 2 节”,当这两个部分都取消注释时,查询最多需要 23 秒才能获得 87 条记录。如果我评论一个部分(第 1 部分现在评论)它会在 2 秒内给出结果。如何在未注释两个部分的情况下提高查询性能?
declare @CountryId bigint = 336,
@Lat varchar(30) = '31.512594000000004',
@Lng varchar(30) = '74.34114',
@Distance int = 10,
@SearchString varchar(30) = 'sprite'
DECLARE @orig_lat DECIMAL(12, 9) = CAST(@Lat AS DECIMAL(12,9));
DECLARE @orig_lng DECIMAL(12, 9) = CAST(@Lng AS DECIMAL(12,9));
DECLARE @orig geography = geography::Point(@orig_lat, @orig_lng, 4326);
select main.* from
ChowDeal.UVW_CD_SearchDeals search inner join
ChowDeal.UVW_CD_DealMenusForCustomer main
on search.Latitude is not null
and search.Longitude is not null
and @orig.STDistance(geography::Point(search.Latitude, search.Longitude, 4326)) / 1609.34 < @Distance
and main.MasterMenuID = search.MasterMenuID
where
(
-- Searching section 1
--(@SearchString = '' or search.MenuName like '%'+ @SearchString +'%' )
--or
--(@SearchString = '' or search.Ingredient like '%'+ @SearchString +'%' )
--or
--(@SearchString = '' or search.RestaurantName like '%'+ @SearchString +'%' )
-- Searching section 2
--or
search.MasterMenuID in
( select DealID from ChowDeal.UVW_CD_SearchDeals
where MenuName like '%'+ @SearchString +'%' and DealID > 0
)
)
解决方案
推荐阅读
- python - 烧瓶管理员,在保存到 s3 存储桶之前对文件上传进行图像宽度验证
- python - 如何在 Python 中使用 KivyMD 复选框
- php - Laravel:从 Carbon\CarbonPeriod 跳过一些时间范围的时间段
- html - 在 :after 元素中调整图像大小时遇到问题
- json - Kotlin Json 解析 openweather 数据时出错
- flutter - 如何使段落中的单词在颤动中可点击?
- excel - Index() & match() 函数不能识别重复值
- python - 将列表中的值拆分为 pandas 中的行
- python - 将变量保存并附加到 txt 文件
- python - 在heroku的后台线程中运行烧瓶