在Where中对列使用函数,将导致其不可索引

在Sql语句的Select部分对字段编写标量函数是完全可以的,但是下面代码:

select EmpNo,LastName
from Emp
where YEAR(HireDate)=2005

应当写为

select EmpNo,LastName
from Emp
where HireDate between ‘‘ and ‘‘

如上所示重写这个语句后,DB2可以选择使用HireDate上的索引(如果存在这样一个索引)。但是如果在使用了Year函数,DB2就无法使用该列的索引了。

虽然可以使用函数或表达式创建表达式索引,即便如此,仍然要尽可能像上面那样重新编写查询。

时间: 2024-10-28 16:16:07

在Where中对列使用函数,将导致其不可索引的相关文章

查询条件左边写入函数,导致无法命中索引

背景: 简单罗列下之前做过的优化,人懒. 所以没能把所有的整理统一放出来. 情况: 系统查询过慢,没能命中索引. <!--对账单数量 --> <select id="selectCount" resultType="java.lang.Integer" parameterType="map">     select count(*) from monthly_statements where store_id = #{st

选择列表中的列……无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

今天用SQL Server尝试实现一个SQL语句的时候,报了如标题所示的错误,通过在百度里面搜索,并亲自动手实现,终于发现问题所在,现在把它记录下来. 语句如下: select [OrderID],[ProductID], min(UnitPrice) as MinUnitPrice into NewDetails FROM [Northwind].[dbo].[Order Details] Group by [OrderID] 执行该语句之后,SQL Server报错如下: "消息 8120,

选择列表中的列无效,因为该列没有包含在聚合函数或 GROUP BY 子句中

T-SQL核心语句形式: SELECT     --指定要选择的列或行及其限定  [INTO ]      --INTO子句,指定结果存入新表 FROM      --FROM子句,指定表或视图 [WHERE ]                 --WHERE子句,指定查询条件 [GROUP BY ]           --GROUP BY子句,指定分组表达式 [HAVING ]                --HAVING子句,指定分组统计条件 [ORDER BY [ASC|DESC]] 

C++中rand()函数的用法

C++中rand()函数的用法   2011-12-30 11:03:59|  分类: C / C++|举报|字号 订阅 一.C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过.但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数. 可改用C++下的rand函数来实现. 1.C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数. RAND_MAX必须至少为

Linux操作系统中的系统调用接口函数

在分析病毒样本时发现有些系统函数是必用,有些超常用,现在都列出来,希望和大家交流 转载请注明出处:http://blog.csdn.net/u010484477     O(∩_∩)O谢谢 进程控制 fork 创建一个新进程 clone 按指定条件创建子进程 execve 运行可执行文件 exit 中止进程 _exit 立即中止当前进程 getdtablesize 进程所能打开的最大文件数 getpgid 获取指定进程组标识号 setpgid 设置指定进程组标志号 getpgrp 获取当前进程组

Mysql 中有关日期的函数(sql)

DAYOFWEEK(date)返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六).这些索引值对应于ODBC标准.mysql> select DAYOFWEEK('1998-02-03');-> 3 DAYOFMONTH(date)返回date的月份中日期,在1到31范围内.mysql> select DAYOFMONTH('1998-02-03');-> 3 DAYOFYEAR(date)返回date在一年中的日数, 在1到366范围内.mysql> se

SQL中的单记录函数

SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A         A      ZERO     SPACE--------- --------- --------- ---------       65        97        48        32 2.CHR给出整数,返回对应的字符;SQL> s

C语言中关于时间的函数

C语言中关于时间的函数 本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,南平私家侦探(http://user.qzone.qq.com/778607337)并对计时.时间的获取.时间的计算和显示格式等方面进行了阐述.本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法. 关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时间点),clock tick(时钟计时单元) 注:linux系统时间如

SQL中convert()函数使用小结

CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到. 语句 结果SELECT CONVERT(varchar(100), GETDATE(), 0) 07 15 2009 4:06PMSELECT CONVERT(varchar(100), GETD