先说下我的SQL数据库文件大概有900万条数据,约3.5G大小,全部在一个表中,以下是我的建表SQL脚本,其中在[XH]中个字段建立了聚集索引。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ic]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ic]
GOCREATE TABLE [dbo].[ic] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[XH] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[PP] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[PH] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[FZ] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[SL] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[BZ] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[USERID] [int] NULL ,
[CNAME] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ADRESS] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[TEL] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[XZ] [int] NULL ,
[RA] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ISP] [int] NULL ,
[AID] [int] NULL ,
[KU] [int] NULL ,
[JJ] [int] NULL ,
[isp2] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO CREATE CLUSTERED INDEX [IX_ic] ON [dbo].[ic]([XH]) ON [PRIMARY]
GO我的ASP查询代码是:sql="select top "&page_size*page&" xh,pp,ph,fz,sl,bz,cname,adress,tel, isp,xz,ku,jj,userid,isp2 from ic where xh like '"&ICxh&"%' order by isp desc,xz desc,userid asc,jj asc"
在执行ASP查询的时候有的时候很快 ,但有的时候很慢,而且SQL占用的内存很快上升,最后ASP页面出现查询超时错误。
为什么有的时候能很快查出来,有的时候会出现SQL占用很大内存,而且不能释放呢?甚至导致死机。望各位高人指点。感激不尽!!
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ic]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[ic]
GOCREATE TABLE [dbo].[ic] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[XH] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[PP] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[PH] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[FZ] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[SL] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[BZ] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[USERID] [int] NULL ,
[CNAME] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ADRESS] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[TEL] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[XZ] [int] NULL ,
[RA] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[ISP] [int] NULL ,
[AID] [int] NULL ,
[KU] [int] NULL ,
[JJ] [int] NULL ,
[isp2] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO CREATE CLUSTERED INDEX [IX_ic] ON [dbo].[ic]([XH]) ON [PRIMARY]
GO我的ASP查询代码是:sql="select top "&page_size*page&" xh,pp,ph,fz,sl,bz,cname,adress,tel, isp,xz,ku,jj,userid,isp2 from ic where xh like '"&ICxh&"%' order by isp desc,xz desc,userid asc,jj asc"
在执行ASP查询的时候有的时候很快 ,但有的时候很慢,而且SQL占用的内存很快上升,最后ASP页面出现查询超时错误。
为什么有的时候能很快查出来,有的时候会出现SQL占用很大内存,而且不能释放呢?甚至导致死机。望各位高人指点。感激不尽!!
2、分表,如果可以,把这个表分为几个,sqlserver一个表超过200万,效率就很低了
3、提高sqlserver对内存和cpu的使用