请教一个困扰我两天的问题。假如有两个sql文sql1select a1,a2,a3, a44from awhere id in (1000个) or id in ( 1000个 ) ……..select中共取得44列数据,where中共10000个id
sql2select a1,a2,a3, a44 a60from awhere id in (1000个) or id in ( 1000个 ) ……..select中共取得60列数据,where中共10000个id
这两个sql文的返回结果分别是 44*10000 的方阵
以及 60*10000 的方阵a表的id字段有主键唯一索引困惑:为什么在sqlplus中分析sql1比sql2执行时间短,
而在java中用statement.executeUpdate(sql)执行结果却是
sql2比sql执行时间短呢?各位有无思路及建议之处
sql2select a1,a2,a3, a44 a60from awhere id in (1000个) or id in ( 1000个 ) ……..select中共取得60列数据,where中共10000个id
这两个sql文的返回结果分别是 44*10000 的方阵
以及 60*10000 的方阵a表的id字段有主键唯一索引困惑:为什么在sqlplus中分析sql1比sql2执行时间短,
而在java中用statement.executeUpdate(sql)执行结果却是
sql2比sql执行时间短呢?各位有无思路及建议之处
1,select 20列 from a where id in (10001 ~ 20000)
2,select 40列 from a where id in (20001 ~ 30000)
3,select 60列 from a where id in (30001 ~ 40000)
4,select 80列 from a where id in (40001 ~ 50000)sqlplus中执行时间
1<2<3<4java中执行时间
1<3<2<4求解!
索引是什么索引类型?B-TREE?
记得索引值越大效率越低,好像有个这么的论证
在sqlplus的执行计划里头,在where条件一样时,返回的字段越多,它的执行时间就越长.由于本人对executeUpdate不是很了解,将该方法贴一下:
java中用statement.executeUpdate(sql)
方法executeUpdate
用于执行 INSERT、UPDATE 或 DELETE 语句以及 SQL DDL(数据定义语言)语句,例如 CREATE TABLE 和 DROP TABLE。INSERT、UPDATE 或 DELETE 语句的效果是修改表中零行或多行中的一列或多列。executeUpdate 的返回值是一个整数,指示受影响的行数(即更新计数)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的语句,executeUpdate 的返回值总为零。
使用executeUpdate方法是因为在 createTableCoffees 中的 SQL 语句是 DDL (数据定义语言)语句。创建表,改变表,删除表都是 DDL 语句的例子,要用 executeUpdate 方法来执行。你也可以从它的名字里看出,方法 executeUpdate 也被用于执行更新表 SQL 语句。实际上,相对于创建表来说,executeUpdate 用于更新表的时间更多,因为表只需要创建一次,但经常被更新。~~~关注一下!!
java里用得时executeQuery(sql)义务上不涉及对db的更新,删除操作只是查询效率问题
这么别扭的说法是日本人的习惯?
关键是java里执行时间比较奇怪
sql文这种叫法貌似在对日外包的招聘中见的比较多-_-!