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都是相同的情况
B) SELECT G.C_GID FROM GIJUTSUSYA G WHERE G.C_GIJUTSU = '11111111' 为什么a语句有使用索引,b语句却没有使用索引?
mssql、oracle都是相同的情况
解决方案 »
- 求试卷考试系统问题
- JBPM4.4 判断节点.加入脚本.
- struts2 验证框架中,如果要验证一组值该如何写xml。
- 【50分问大牛】学了几个月struts发现没弄明白基础知识
- hibernate 查询出的结果字段顺序出错
- 我要将oracle数据库内容转换成mysql的,怎么弄?说具体点,谢谢~!
- struts框架中,从数据库中取数据然后显示在页面上
- 高手们能给我看看一个小问题 先谢过了
- Spring3.1.0跟hibernate4.1.1整合报错ClassNotFoundException: org.hibernate.cache.CacheP
- 为什么springMVC拦截器拦截不到 ajax中的URL ,而是直接进controller里面执行代码, 从而报空指针异常 。
- org.xml.sax.SAXParseException: Document root element "hibernate-AnnotationConfig
- 使用ant自动远程部署war包到websphere的build.xml怎么写
你看看表结构,GIJUTSUSYA 表中的C_GIJUTSU 字段是不是varchar类型的,若不是,则索引会失效
public static void main(String[] arg) {
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=zjygj;sendStringParametersAsUnicode=false";
String user = "sa";
String password = "aa";
Connection cnt = DriverManager.getConnection(url, user, password);
test1(cnt);
test2(cnt);
test3(cnt);
cnt.close();
}
catch(Exception e){
e.printStackTrace();
}
}
private static void test1(Connection cnt) throws SQLException{
long t1 = System.currentTimeMillis();
Statement st = cnt.createStatement();
ResultSet rs = st.executeQuery("SELECT count(*) FROM IESK_STOCKTRANSITEM where rescode = '0702102076'");
System.out.print(rs.next()?"true":"false");
long t2 = System.currentTimeMillis();
rs.close();
st.close();
System.out.println(">\tStatement:\t" + (t2-t1));
}
private static void test2(Connection cnt) throws SQLException{
long t1 = System.currentTimeMillis();
PreparedStatement st = cnt.prepareStatement("SELECT count(*) FROM IESK_STOCKTRANSITEM where rescode = '0702102076'");
ResultSet rs = st.executeQuery();
System.out.print(rs.next()?"true":"false");
long t2 = System.currentTimeMillis();
rs.close();
st.close();
System.out.println(">\t没有参数:\t\t" + (t2-t1));
}
private static void test3(Connection cnt) throws SQLException{
long t1 = System.currentTimeMillis();
PreparedStatement st = cnt.prepareStatement("SELECT count(*) FROM IESK_STOCKTRANSITEM where rescode = ?");
st.setString(1, "0702102076");
ResultSet rs = st.executeQuery();
System.out.print(rs.next()?"true":"false");
long t2 = System.currentTimeMillis();
rs.close();
st.close();
System.out.println(">\t有参数:\t\t" + (t2-t1));
}