Sybase Query没有使用正确的索引

时间:2014-12-07 07:36:26

标签: linq nhibernate sybase linq-to-nhibernate

我在sybase上有一个表,其中包含大约500000条记录,具有以下架构

CREATE TABLE dbo.mf_test_table
(
    col1 char(12)      NOT NULL,
    col2 char(3)       NOT NULL,
    col3 int      NOT NULL,
    constraint pk_mf_test_table primary key (col1,col2)
)

当我尝试执行将两个键列连接在一起的查询时,查询需要很长时间

select * from mf_test_table where col1+'-'+col2 = 'xxxx-yyyyy'

此查询以毫秒为单位运行

select * from mf_test_table where col1 = 'xxxx' and col2 'yyyyy'

另一个解决方案是指定像

这样的索引提示
select * from mf_test_table (index pk_mf_test_table) where col1+'-'+col2 = 'xxxx-yyyyy'

问题是我使用linq来nhibernate来进行这个查询而我无法控制查询的生成来发送索引提示

我的问题是为什么sybase查询优化器没有使用连接在查询中找到正确的索引,并且有任何建议以任何方式修改下面的linq查询以使用索引

var query = mf_test_table.Where(x => x.col1 + "-" + x.col1 == "xxxx-yyyy");

0 个答案:

没有答案