相关疑难解决方法(0)

是否对SQL WHERE子句进行了短路评估?

例如:

SELECT * 
FROM Table t 
WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 
Run Code Online (Sandbox Code Playgroud)

如果@key IS NULL的计算结果为true,那么@key IS是否为NULL并且@key = t.Key是否已计算?

如果不是,为什么不呢?

如果是,是否有保证?它是ANSI SQL的一部分还是特定于数据库?

如果是数据库特定的,SqlServer?甲骨文?MySQL的?

参考:短路评估

sql short-circuiting

135
推荐指数
6
解决办法
5万
查看次数

SQL - WHERE条件的顺序是否重要?

假设这category_id是表的索引键(不是主键)books.以下两个SQL语句之间有什么区别吗?

SELECT * FROM books WHERE author='Bill' AND category_id=1

SELECT * FROM books WHERE category_id=1 AND author='Bill'
Run Code Online (Sandbox Code Playgroud)

我想首先过滤记录category_id然后再author过滤比以相反顺序过滤它们更快.SQL引擎是否足够智能以这种方式实现?

sql

54
推荐指数
3
解决办法
2万
查看次数

WHERE子句中的字段顺序是否会影响MySQL的性能?

我在表中有两个索引字段 - typeuserid(单个索引,而不是复合索引).

types字段值非常有限(假设它只有0或1),因此50%的表记录具有相同的值type.userid另一方面,值来自更大的集合,因此具有相同userid值的记录量很小.

这些查询中的任何一个都会比另一个运行得更快:

select * from table where type=1 and userid=5
select * from table where userid=5 and type=1
Run Code Online (Sandbox Code Playgroud)

此外,如果两个字段都没有编入索引,它会改变行为吗?

mysql sql performance

47
推荐指数
3
解决办法
3万
查看次数

WHERE子句中列的顺序是否重要?

WHERE子句中列的顺序是否会影响性能?

例如

假设我把一个具有更高潜力的专栏放在首位,反之亦然?

sql-server performance

33
推荐指数
3
解决办法
1万
查看次数

SQL问题:WHERE子句的顺序是否有所不同?

从性能的角度来看,我的SQL WHERE语句的顺序是否有所不同?

例如

SELECT ... FROM ...
WHERE a > 1
AND b < 2
Run Code Online (Sandbox Code Playgroud)

会比这更快/更慢吗?

SELECT ... FROM ...
WHERE b < 2
AND a > 1
Run Code Online (Sandbox Code Playgroud)

让我们假设我事先知道a > 1会缩小结果集.

另外,如果我按照WHERE语句的顺序加入两个或更多表,这有关系吗?

sql performance

19
推荐指数
4
解决办法
1万
查看次数

SQL'where'子句中条件的执行顺序

我在where子句中有一组条件

WHERE 
d.attribute3 = 'abcd*'  
AND x.STATUS != 'P' 
AND x.STATUS != 'J' 
AND x.STATUS != 'X' 
AND x.STATUS != 'S' 
AND x.STATUS != 'D' 
AND CURRENT_TIMESTAMP - 1 < x.CREATION_TIMESTAMP
Run Code Online (Sandbox Code Playgroud)

首先执行以下哪些条件?我正在使用oracle.

我会在执行计划中获得这些细节吗?(我没有权限在数据库中这样做,否则我会尝试)

sql oracle where

14
推荐指数
3
解决办法
5万
查看次数

Sql - WHERE条件的显式顺序?

有没有办法明确说明发生WHERE条件的顺序?我意识到查询优化器将查看WHERE子句的所有部分,以确定满足查询的最有效方法,如以下答案中所述:

where子句的顺序在SQL中是否重要

SQL - WHERE条件的顺序是否重要?

但是,有没有办法检查其他条件会依赖的条件?这些线程的答案之一涉及到我所追求的,但没有提供解决方案:

select *
from INFORMATION_SCHEMA.TABLES
where ISNUMERIC(table_name) = 1 and CAST(table_name as int) <> 0
Run Code Online (Sandbox Code Playgroud)

这可能会失败,因为可以在确定table_name字段是否为数字之前评估CAST(因此会为无效转换引发错误).

当然必须有办法实现这一目标吗?

sql

6
推荐指数
1
解决办法
305
查看次数

标签 统计

sql ×6

performance ×3

mysql ×1

oracle ×1

short-circuiting ×1

sql-server ×1

where ×1