查看: 10930|回复: 11

[精华] db2中函数索引吗?

[复制链接]
论坛徽章:
3
2010新春纪念徽章
日期:2010-03-01 11:19:53ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41优秀写手
日期:2014-04-01 06:00:12
跳转到指定楼层
1#
发表于 2006-4-18 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个SQL ,WHERE 中个函数LCASE(列)
select count(*) from enduser where User_GroupDN = ? and LCASE
(User_EnglishName) = ?
在ORACLE中可以建立一个函数索引,在DB2中怎么办能提高查询速度??

谢谢!!!!
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
2#
发表于 2006-4-18 14:21 | 只看该作者
好像没有

使用道具 举报

回复
论坛徽章:
3
2010新春纪念徽章
日期:2010-03-01 11:19:53ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41优秀写手
日期:2014-04-01 06:00:12
3#
 楼主| 发表于 2006-4-18 14:35 | 只看该作者
又不能改程序中的SQL,怎么办呢?


谢谢!!!

使用道具 举报

回复
论坛徽章:
3
2010新春纪念徽章
日期:2010-03-01 11:19:53ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41优秀写手
日期:2014-04-01 06:00:12
4#
 楼主| 发表于 2006-4-18 16:23 | 只看该作者

创建一个新列,在新列上建立索引

例如:在AAA表中加入一列,AA4 此列是AA1列的小写
然后在AA4上建立索引,当以AA1列的小写为查询条件时
优化器会使用AA4上的索引。

CREATE TABLE DB2INST1.AAA ("AA1" CHARACTER (10)  NOT NULL , "AA2" CHARACTER (10) , "AA3" CHARACTER (10) , "AA4" CHARACTER (10)  NOT NULL GENERATED ALWAYS AS (lcase(aa1)) )   

create index idx_aa1 on aaa(aa4)

select count(*) from aaa where  lcase(aa1)='aa'

下面是在一个已经存在数据的表上做的操作:
SET INTEGRITY FOR INSTANCE1.DETAILTBL OFF;
ALTER TABLE INSTANCE1.DETAILTBL  
  ADD COLUMN year_dob GENERATED ALWAYS (YEAR(DOB));
SET INTEGRITY FOR INSTANCE1.DETAILTBL
  IMMEDIATE CHECKED FORCE GENERATED;


CREATE INDEX
INSTANCE1.IDX0001 ON INSTANCE1.DETAILTBL (PPLINX ASC, YEAR_DOB ASC) PCTFREE 10 MINPCTUSED 10


The DB2 optimizer will replace YEAR(DOB) with YEAR_DOB in your queries
and thsu pick up the index.

使用道具 举报

回复
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
5#
发表于 2006-4-18 16:37 | 只看该作者
不错,这是一个变通的办法

使用道具 举报

回复
论坛徽章:
3
2010新春纪念徽章
日期:2010-03-01 11:19:53ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41优秀写手
日期:2014-04-01 06:00:12
6#
 楼主| 发表于 2006-4-18 17:12 | 只看该作者
我昨天发了个application connect 帖子,你帮忙看看
谢谢!!!
http://www.itpub.net/526853.html

使用道具 举报

回复
论坛徽章:
233
天枰座
日期:2016-02-02 09:36:332012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41灰彻蛋
日期:2011-06-22 19:28:30现任管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:拳击
日期:2011-04-08 16:56:552011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
7#
发表于 2006-4-19 09:58 | 只看该作者
授个精

使用道具 举报

回复
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412010广州亚运会纪念徽章:橄榄球
日期:2011-05-22 10:54:33管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010年世界杯参赛球队:丹麦
日期:2010-04-06 10:23:36
8#
发表于 2006-4-19 10:30 | 只看该作者

最初由 diablo2 发布
[B]授个精
[/B]

使用道具 举报

回复
论坛徽章:
3
会员2007贡献徽章
日期:2007-09-26 18:42:10授权会员
日期:2007-10-23 20:58:17优秀写手
日期:2014-03-01 06:00:03
9#
发表于 2006-4-19 14:47 | 只看该作者

Re: 创建一个新列,在新列上建立索引

最初由 k2001 发布
[B]select count(*) from aaa where lcase(aa1)='aa' [/B]

这地方是不是必须这么写?
select count(*) from aaa where aa4='aa'

要不然,索引能用到吗?

使用道具 举报

回复
论坛徽章:
21
ITPUB元老
日期:2005-02-28 12:57:002012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20版主1段
日期:2012-05-15 15:24:11管理团队成员
日期:2013-05-02 11:19:53马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:13:20
10#
发表于 2006-4-20 11:21 | 只看该作者
k2001的写法是可以的

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表