Oracle中一张table做insert之后,500W条数据,做系统的测试。测试完之后,把500W数据都删除掉了。但是为何查询的速度还是比原来慢非常多(已经是空表了)。
解决方案 »
- 求SQL语句:时间相差的大于N秒的最近两row取出来
- 怎样在oracle库中 查出数据在哪个表中
- 请教条SQL怎么写
- 1000分征求oracle数据库对于海量数据的存储、查询解决方案
- 问个简单的问题,怎么启动服务器阿?
- 优化SQL
- 请推荐一款最优秀的数据库建模工具,最好能说说它的好处
- 请回复" 请教一个查询时出现的问题,厚礼相送 (iamicexie ) ",在线等候
- ORACLE 对象中,如何用alter type 增加对象函数?
- ORA-00445: background process W000 did not start after 120 seconds导致数据库死机
- 请问一个EM奇怪的问题·!
- oracle几道单选题目!
应该是碎片的原因
用truncate这个
SQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------SQL> create table tiny.xieyijun(id number);Table created
--------创建一张表,分配空间
SQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------
XIEYIJUN 65536-------插入20000条记录,分配的空间由于65536变为了262144
SQL> edit
SQL> /PL/SQL procedure successfully completedSQL> commit;Commit completeSQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------
XIEYIJUN 262144
---------删除所有记录后,分配的空间不变,这个就是HWM的值
SQL> delete from tiny.xieyijun;20000 rows deletedSQL> commit;Commit completeSQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------
XIEYIJUN 262144
---------truncate/drop掉后,存储空间被释放。hWM减少
SQL> truncate table tiny.xieyijun;Table truncatedSQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------
XIEYIJUN 65536SQL> drop table tiny.xieyijun;Table droppedSQL> select segment_name,bytes from dba_segments where owner = upper('tiny') and segment_name = upper('xieyijun');SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------SQL>