如何提高sql数据库对插入比较长的字符串的速度

如何提高sql数据库对插入比较长的字符串的速度,第1张

首先你要分析出来插入时候慢的原因,

1、磁盘速度慢?

2、表里字段创建的索引过多?

3、表在其他的视图中存在,并且在视图里创建了索引?

4、插入到的表有触发器 或者该数据库有触发器,引起了其他 *** 作?

综上所述,找到原因,解决原因,应该就能很快解决的

若你是SQL SERVER,可以用事件探查器监视一下,在该语句执行时的情况,会有助于你分析问题

不要一行一行insert,这样很慢,用事务批量写入就会快很多

原理:一行行insert数据时,每次insert都相当于一次事务提交,而显式用一个事务批量提交时,只提交一次即可,速度自然就会快很多

(1)创建student表

create table Student(

Sno char(9) primary key,

Sname char(20) unique,

Ssex char(2) check(Ssex='男' or Ssex='女'),

Sage smallint,

Sdept char(20)

);

创建course表

create table Course(

Cno char(4) primary key,

Cname char(40) unique,

Ccredit smallint,

Csemester char(20)

);

创建成绩表

create table Grade(

Sno char(9),

Cno char(4),

Ggrade int,

--主码由Sno和Cno组成

primary key(Sno,Cno),

--表级完整性约束

foreign key(Sno) references Student(Sno),

foreign key(Cno) references Course(Cno)

);

(2)

select Sname,Sage

from Student

(3)

select Sname

from student

where sname not like '王%' and sname not like '李%'

(4)

select count()as 选课门数,sum (ggrade)as 总成绩,max(ggrade) as 最高分,min(ggrade) as 最低分,avg(ggrade) as 平均分

from  grade 

where sno='9512101'

(5)

select TOP 3 Sname,Sage,Sdept

from student

order by Sage

(6)

insert

into Student(Sno,Sname,Ssex,Sage,Sdept)

values('9521104','陈东','男',18,'信息系')

(7)

update Student

set Sage=Sage+1

(8)

create view V1

as

select StudentSno,StudentSname,Ggrade

from Student,Grade

where StudentSno=GradeSno and cno='c01'

1对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

select id from t where num=0

3应尽量避免在 where 子句中使用!=或<> *** 作符,否则将引擎放弃使用索引而进行全表扫描。

4应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num=10 or num=20

可以这样查询:

select id from t where num=10

union all

select id from t where num=20

5in 和 not in 也要慎用,否则会导致全表扫描,如:

select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

6下面的查询也将导致全表扫描:

select id from t where name like '%abc%'

若要提高效率,可以考虑全文检索。

你经常查询的,经常分组的,经常判断的

字段

,必须加

索引

,增加索引后,查询速度会大幅度提高,但是插入,更新,删除速度会变慢,总而言之,总有一个慢,你权衡是数据插入,更新,删除多还是查询多,决定是否增加索引,非经常查询字段就不要增加索引了,以免浪费

数据空间

和增加插入,更新,删除的时间

另外,如果数据按时间增长,由于你使用的是SQL2000,建议将

大表

拆开每日保存一张

日表

,缩小单张表的大小,在表内查询就会快很多(因为读进

内存

的数据小多了),实现分区的功能;如果使用SQL2005,则数据库可以直接支持分区

这样就

没有问题

了,我们这处理的数据每天4000

万行

,保存了50天数据,查询起来也只要5分钟

以上就是关于如何提高sql数据库对插入比较长的字符串的速度全部的内容,包括:如何提高sql数据库对插入比较长的字符串的速度、sql 如何向数据库中写入的速度快、数据库sql语句,速度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9406493.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存