oracle 50W数据,查询要好几分钟,怎么优化数据库?
表结构如下:
-- Create table
create table CSS_SUPPLY
(
supply_id VARCHAR2(20) not null,
user_id VARCHAR2(16) not null,
cont_no VARCHAR2(10),
reg_date VARCHAR2(20),
product_id VARCHAR2(20),
product_name VARCHAR2(200),
uom VARCHAR2(10),
trademark VARCHAR2(30),
origin VARCHAR2(30),
category VARCHAR2(10),
quantity NUMBER(10),
deliver_days NUMBER(10),
deadline VARCHAR2(20),
img_uri VARCHAR2(600),
status VARCHAR2(2),
product_name_en VARCHAR2(200),
trademark_en VARCHAR2(30),
origin_en VARCHAR2(30),
category_en VARCHAR2(10),
uom_en VARCHAR2(10),
remark_en VARCHAR2(4000),
visit_count NUMBER(16),
stock_number NUMBER(16),
enquiry_count NUMBER(16),
price NUMBER(20,2),
product_code VARCHAR2(20),
standard VARCHAR2(150),
standard_en VARCHAR2(150),
model VARCHAR2(150),
model_en VARCHAR2(150),
cont_name VARCHAR2(30),
cont_name_en VARCHAR2(30),
cont_email VARCHAR2(60),
cont_phone VARCHAR2(50),
cont_mobile VARCHAR2(50),
cont_fax VARCHAR2(50),
eval_count NUMBER(16),
oa_info_lvl VARCHAR2(20),
oa_operator_id VARCHAR2(20),
oa_info_date VARCHAR2(20),
stock_type VARCHAR2(10),
order_count NUMBER(16),
user_name VARCHAR2(200),
praise_count NUMBER(16),
share_count NUMBER(16),
store_status VARCHAR2(2),
shop_status VARCHAR2(2),
cate_id VARCHAR2(10),
brand_id VARCHAR2(100),
remark CLOB,
remark1 VARCHAR2(4000)
)
tablespace CSS
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 40320
next 128
minextents 1
maxextents unlimited
pctincrease 0
);
-- Create/Recreate primary, unique and foreign key constraints
alter table CSS_SUPPLY
add primary key (SUPPLY_ID)
using index
tablespace CSS
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 2M
next 128K
minextents 1
maxextents unlimited
pctincrease 0
);
[解决办法]
这样的表列太多了,全表扫描肯定是很慢了。所以首先对需要的查询条件尽量去加索引。
1、对于像状态之类的列,不是很多的,就可以加位图索引,对于唯一的列,就加唯一索引,其余的创建普通索引。另外最好看一下 执行计划,是否走了你创建的索引。
2、尽量不要使用select * 这样的查询,你这么大的表,就查询你需要的列就可以了 select col1,col2这样就可以了
[解决办法]
这个 看这计划 走索引了吗。。。 就是耗时在全部扫描上了
如果status这列都是数字 可以将这个改为数字类型 查询起来会快点
需要哪列 就写出哪列 不要闲麻烦
[解决办法]