相关疑难解决方法(0)

优化SELECT COUNT到EXISTS

我有查询从表中查找某些客户.

SELECT COUNT(*)
  FROM CUSTOMER
 WHERE amount <> 0
   AND customerid = 22
Run Code Online (Sandbox Code Playgroud)

customerid上有一个索引,因此DB会扫描customerid = 22的所有行.

由于通过检查计数是返回零还是大于零来处理结果,我该如何优化查询?也就是说,在第一个客户行,金额<> 0,如果所有行都是= 0,则查询返回0,然后返回1.

sql t-sql sql-server

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

需要BOOLEAN结果来自SQL EXISTS语句而不使用WHERE子句

在不使用WHERE子句的情况下,在简单查询中是否有任何方法可以使用SQL EXISTS语句返回布尔值?

所有2008 R2 SQL Server联机丛书示例都显示了另一个WHERE子句和两个表.网站示例显示过程中的WHERE或IF-THEN-ELSE.

我希望在一张桌子上做以下事情:

EXISTS
(SELECT  cx.id
 FROM fdd.admissions_view as cx  
 WHERE cx.id=1111 and cx.campus='MEXI') 
Run Code Online (Sandbox Code Playgroud)

SELECT语句正常工作并返回ID.我只想添加EXISTS来返回BOOLEAN,但上面的语法无效.

我可以这样做吗?如果是这样,我在语法方面缺少什么?如果没有,还有什么其他技术可行?

请指教.谢谢.

t-sql sql-server exists

17
推荐指数
4
解决办法
2万
查看次数

检查项目是否存在的最佳方法是:选择计数(ID)还是存在(...)?

如果表格包含超过700,000行,则确定项目是否存在的性能最佳

if (Select count(id) from Registeration where email='email@w.cn') > 0
    print 'Exist'
else
    print 'Not Exist'
Run Code Online (Sandbox Code Playgroud)

要么

if Exists(Select id from Registeration where email='email@w.cn') 
    print 'Exist'
else
    print 'Not Exist'
Run Code Online (Sandbox Code Playgroud)

sql t-sql performance sql-server-2005

16
推荐指数
1
解决办法
7159
查看次数

在SQL Server中将Bool转换为Bit

我需要将EXISTS函数的结果写入变量.我读到SQL Server没有'bool'变量,所以我想将结果存储在一个变量中.反之亦然,从'bit'转换为'bool'.我怎样才能实现它?

sql-server sql-server-2008 sqldatatypes

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