select count(*) from tablename
和
select count(a) from tablename
哪个快?为什么select a,b,c 快?
解决方案 »
- oracle数据库关联查询的sql问题!!!!
- 如何让一个监听对应一个实例
- 请教ORACLE SQL 语句问题
- 关于oracle乱码问题
- 请问IBM AIX下安装Oracle9i,创建数据库时,默认的数据库字符集、国家字符集、默认语言、默认日期格式分别是什么?
- 难搞的SQL,高手进来看看
- oo4o如何一次插入多条记录?
- 请教:关于利用一个表更新第二个表格的方法问题
- 请问高手,有啥办法一次性把一批数据导入ORACLE 9数据库
- 求解一个sql,这种判断怎么写啊?求大神帮助
- 各位同道:oracle9i用遊標返回記錄集,在 java/jsp 中怎樣接收?!!謝謝!!
- oracle817在readhat linux8.0上的安装问题
可以用命令:
set timing on
开启时间统计测试结果
select a,b,c from tablename
块
和
select count(a) from tablename
哪个快?
如果你用oracle的话
select count(a) from tablename
快
我们课上刚学过。
because select * clause must be compiled into select a,b,c...
this process may cause a little time,although approaching zeroselect * is easy to use!
select *
需要OCIDescribeAny()取得列名,列数,然后再取得数据类型名,数据类型,数值范围...
select a,b,c...
只需要取得数据类型名,数据类型,数值范围...相比较而言select *多了几步,所以select a,b,c比较快,但只是如(freeman12345)所言a little faster
而chooser所说的不完全正确
两者都需要写入一个中间结果集中,只是select * 多用到了一些变量而已
select * from ss_sales_record 耗时306.741s
select note_id,filiale_id from ss_sales_record 耗时532.898s
我这是从客户端进行测试的,不对请指正
还有对于表中如含有大型数据对象,这个没有试过,请赐教!
select count(*) from ss_sales_record 耗时0.16s
select count(note_id) from ss_sales_record 耗时0.16s表结构如下:
FieldName Type
NOTE_ID VARCHAR2(12)
FILIALE_ID VARCHAR2(4)
MARKET_ID VARCHAR2(6)
USER_ID VARCHAR2(10)
PRODUCE_ID VARCHAR2(4)
TYPE_ID VARCHAR2(4)
PRODUCT_ID VARCHAR2(5)
PRODUCT_COLOR VARCHAR2(20)
SALE_QUANTITY NUMBER(10)
SALE_PRICE NUMBER(10,2)
SALE_GENERAL_QUANTITY NUMBER(10)
SALE_GENERAL_PRICE NUMBER(10,2)
SALE_SPECIAL_QUANTITY NUMBER(10)
SALE_SPECIAL_PRICE NUMBER(10,2)
START_DATE DATE
END_DATE DATE
INPUT_DATE DATE
USER_ID1 VARCHAR2(10)
DEL_FLAG VARCHAR2(1)
select note_id,filiale_id from ss_sales_record 耗时532.898s网络传输怎样,是否同时执行其他sql
我想一般的select语句都不会这么简单,只是select *就可以拉,
那么,以后写完的程序后,直接拿去测试下,看时间满意否,就可以拉。
1.在oracle服务器主机运行
2。服务器不处理任何事务
对于一般问题不过是变量多少问题,但是对于数据库,就是数据量的问题了。
我的切身体会中,最典型的就是一个表中有一个备注字段400字节,如果select了,那么大数据量访问速度立刻减低,因为数据量大,大部分情况会导致磁盘操作,假设数据有100万条,那么就多了400M的数据写+读的存取时间。当然如果被排除在外的字段大小很小,则这一因素的影响会小很多。
这个问题我们上数据库查询优化理论时特别说过的。
结论另人惊讶了!
ss_sales_record (共24524条记录)
select * from ss_sales_record 耗时591.28S
select note_id,filiale_id from ss_sales_record 耗时69.28s
我这是从主机端进行测试的,不对请指正
还有对于表中如含有大型数据对象,这个没有试过,请赐教!
select count(*) from ss_sales_record 耗时0.15s
select count(note_id) from ss_sales_record 耗时0.16s
对于上次作出的结果表示谦意!
欢迎不同声音!!!
这里是数据库论坛,数据量当然是主要而且重要问题。但我是比较数据量相同的情况,主要是比较执行过程的区别,既然你学过各种理论,应该知道select * 和select a,b,c... 的区别
但是可能有其他原因的影响。
例如你经常查询的结果可能服务器已经放入内存中,这样就影响了测试的结果。还有where条件的影响等等。
不对之处请各位指正。
将全部字段列在select中?即select a,b,c,d........与select *进行效率比较?
这时返回的数据其实完全一样,也只有这种情况下“数据量相同”,其它情况下数据量肯定不同。
如果是这样,我绝对不会用select a,b,c,d...的,即使其效率再高^_^