首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Sybase >

sql anywhere 索引有关问题

2012-03-06 
sql anywhere 索引问题--CREATE INDEX ixc_DBA_index_consultant0_1 ON DBA.c_cwkmk (dwid,ndid,kmb

sql anywhere 索引问题
--CREATE INDEX "ixc_DBA_index_consultant0_1" ON "DBA"."c_cwkmk" (dwid,ndid,kmbh );
--CREATE INDEX "ixc_DBA_index_consultant0_2" ON "DBA"."c_cwkmk" (dwid,ndid,kmwm );

select * from c_cwkmk where dwid = 2 and ndid = 2 and kmwm like '1101%'

按照帮助说的 like 可以使用索引扫描,上面这条检索语句应该使用索引2,但给出的计划显示使用的是索引1.
如果我再建下面的一个索引,计划显示使用索引2了。
--CREATE INDEX "ixc_DBA_index_consultant0_4" ON "DBA"."c_cwkmk" ( kmwm );

我使用的是anywhere10。我在anywhere7里也测试过,有没有索引4都使用索引1.
哪位大侠给我指点一下迷津啊?

[解决办法]
比较复杂
你建立
CREATE INDEX "ixc_DBA_index_consultant0_1" ON "DBA"."c_cwkmk" (dwid,ndid,kmbh,kmwm );
试试
[解决办法]
使用索引的问题是比较复杂的,
你可以参考一下
http://www.ianywhere.com/developer/product_manuals/sqlanywhere/1001/zh/html/dbugzh10/ug-composite-using-perform.html

ASA官方复合索引说明
[解决办法]
like 对索引的利用比较复杂。
首先必须 通配在后 ,这一点你的已经符合了。
另外就是系统要认为针对LIKE使用这个索引它认为更合理。(这一点则由系统自行决定了,很多细节并没有公布)
[解决办法]
复合索引

--------------------------------------------

索引可以包含一个、两个或多个列。两个或更多个列上的索引被称作复合索引。例如,以下语句创建一个具有两列的复合索引:

SQL code
CREATE INDEX nameON Employees ( Surname, GivenName ); 

热点排行