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都是相同的情况
解决方案 »
- 存储过程实现了的交叉表,如何显示在JSP页面上?
- 求一个通用的分页程宇,数据库用的是ORACLE
- mybatis进行多表查询时,建视图?关系映射?还是直接返回Map?困扰了我N久,诚心求教
- 各位大侠救急呀 酒店接口的问题。
- Java代码编写的30条建议!
- 页面运行SQL语句多
- 运行ava org.apache.axis.client.AdminClient时找不到org.apache.commons.logging.LogFactory
- jsp问题。请大哥进来看看 在线等
- 郁闷呀~为什么说我的XMLReader找不到
- 关于repaint()
- 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));
}