- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在具有多个 order by
子句的 SQL 查询中,它们是否真的在执行期间全部运行?
例子:
select * from my_table
order by field5, field3, field2
如果执行“order by”field5 和 field3 后的列表只有一个 field5 和 field3 组合的唯一列表,“order by field2”是否仍在执行 SQL 查询期间运行?或者,就我而言,SQL Server 是否足够聪明,可以看到这一点并跳过最后一步?
我问是因为我正在编写一个存储过程,其中我有一个列表,其中我大部分时间只需要按到或三列排序,但在某些情况下我想按最后一个排序column 如果有必要,但这将是一个字母数字排序,这会减慢查询速度,所以我当然想尽可能避免它......
最佳答案
排序末尾的额外列对查询速度的影响可以忽略不计。
如果可以,按照之前的建议创建复合索引可能是个不错的主意:
create index my_index on my_table (field5, field3, field2);
如果内部排序实现没有实现您所说的优化,我会感到震惊,那是数据结构和算法 101。
不过请注意,在某些情况下,此处的索引会使事情变得更糟,例如,如果您在包含许多元组的表上有大量的表流失,并且如果您的表的开头列很少,优化器将无论如何,只需进行全表扫描,因为它会更快。
关于sql - 对于多个 sql order by 子句,即使之前的 order by 已经证明行不相等,所有的 order bys 是否都运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9467010/
这个想法我已经酝酿了一段时间,但我在网上找不到任何人讨论过这种可能性。 目前可用于进行不区分大小写的搜索的建议似乎是使用“ilike”或“citext”。 我们正在从 Microsoft Sql Se
提前抱歉,我不太确定如何解释这个,但我正在尝试这样做: 我有一个看起来像这样的表: id | make | model 1 | iphone | iphone 7 2 | iphone | iphon
所以我目前在R中遇到一个我完全知道如何在Stata中处理的问题,但是却浪费了两个多小时来完成R中的工作。 使用下面的data.frame,我想要的结果是确切地获得每个组的第一个观察值,而组是由多个变量
我有以下 NHibernate QueryOver 查询: var query = session.QueryOver() .Where(i => i.
我有 3 个表: 推文: CREATE TABLE tweets ( text_content VARCHAR(280) not null, username VA
在具有多个 order by 子句的 SQL 查询中,它们是否真的在执行期间全部运行? 例子: select * from my_table order by field5, field3, fiel
我是一名优秀的程序员,十分优秀!