日期:2014-05-20  浏览次数:20741 次

PreparedStatement使用数据库索引问题
PreparedStatement执行下面语句时,如下:

A) SELECT G.C_GID FROM GIJUTSUSYA G WHERE G.C_GIJUTSU = ?  
B) SELECT G.C_GID FROM GIJUTSUSYA G WHERE G.C_GIJUTSU = '11111111' 

为什么a语句有使用索引,b语句却没有使用索引?
mssql、oracle都是相同的情况

------解决方案--------------------
你从哪里看出没有用索引了
------解决方案--------------------
若A语句使用了索引而B语句没有使用索引,说明B语句的索引失效了,最有可能就是类型强转导致索引失效
你看看表结构,GIJUTSUSYA 表中的C_GIJUTSU 字段是不是varchar类型的,若不是,则索引会失效
------解决方案--------------------
如果你表建了索引,应该就会有的。关键是索引有没有生效?按f5键看看。