azure sql server查询速度慢:198秒。
我的桌面存储大约1 000 000行(lat,lng,price,title,id)。
我这样做是为了最佳性能:
ALTER DATABASE db1 SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE db1 SET AUTO_UPDATE_STATISTICS_ASYNC ON;
CREATE INDEX t1_lat_index ON t1(lat);
CREATE INDEX t1_lng_index ON t1(lng);
CREATE INDEX t1_price_index ON t1(price);
UPDATE STATISTICS t1;
但查询仍然很慢:
select top 100 * from t1 where lat > 46 and lat < 47 and lng > 3 and lng < 5 order by price;
可能因为索引(lat,lng,price)基数仍为零?
答案 0 :(得分:0)
此查询:
select top 100 *
from t1
where lat > 46 and lat < 47 and lng > 3 and lng < 5
order by price;
是有问题的,因为比较是不平等的。您可以从复合索引开始:t1(price, lat, lng)
。这涵盖了where
和order by
条款,因此它们可能更快。
否则,您可能希望查看此类查询的spatial indexes。我认为Azure支持它们。