sql - 如何优化 SQL Server 表上的索引
问题描述
我有以下查询
SELECT
vbShape, XMIN, YMIN, XMAX, YMAX, GlobalID
FROM
(SELECT *
FROM features
WHERE vbShape IS NOT NULL) A
WHERE
XMIN <= -13036746.0212491 AND XMAX >= -13037147.3156476 AND
YMIN <= 3988531.90850796 AND YMAX >= 3988130.61410953
XMIN、XMAN、YMIN、YMAX 都是浮点列。
我需要这个查询尽可能快地运行。每毫秒都至关重要。GlobalID
是主键。我应该为这个表添加什么样的索引?我目前在表上为 XMIN、XMAX、YMIN 和 YMAX 字段定义了 4 个非聚集索引。我是否还应该定义一个索引来包含所有字段?或者我应该添加两个索引?XMIN/XMAX 一个,YMIN/YMAX 一个?添加太多索引有什么问题吗?
解决方案
单个查询只能使用它读取的每个表上的一个索引。无论您在表上创建多少索引,此查询都只会使用其中的一个。
因此,您需要一个涵盖查询中过滤的所有列并包含返回的列的单个索引。
推荐阅读
- javascript - 我正在尝试制作井字游戏,为此我必须解决这个问题:
- sockets - 如何正确安装flask-socketIO?
- rust - 可变与不可变在封闭中借用?
- ios - swift中的TableviewCell问题
- ruby-on-rails - 使用rails 6中的设计发送邮件的ssl错误
- maven - 在 jenkin 中映射 git 远程子模块目录
- laravel - 如何将复选框插入数据库 mysql - laravel
- python - 来自 PDF 函数的两个连续随机变量的 CDF
- python - 找到最小窗口子串
- amazon-redshift - 在 Amazon QuickSight 中使用自定义 SQL 时,连接在哪里执行?