我在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");