LoveUnix » ORACLE等数据库 » 问下千万级记录的表什么提高它的插入与读出速度
让LU留住您的每

一天 让LU博客留住您的每一天
2005-6-28 20:33 无双
表是 ms sql的 虽然想用oracle 不过现在产品还没有人要 不敢用<br /><br />不过发现就是当表中记录很多时查询与插入速度变慢了很多<br /><br />建表语句如下<br />CREATE TABLE [VirusLog] (<br />        [ID] [int] IDENTITY (1, 1) NOT NULL ,<br />        [HandsetID] [int] NOT NULL ,<br />        [ScanDate] [datetime] NOT NULL ,<br />        [VirusName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,<br />        [VirusAction] [int] NOT NULL ,<br />        [ActionResult] [int] NOT NULL ,<br />        [FileName] [nvarchar] (256) COLLATE Chinese_PRC_CI_AS NOT NULL ,<br />        CONSTRAINT [PK_VirusLog] PRIMARY KEY  NONCLUSTERED <br />        (<br />                [ID]<br />        )  ON [PRIMARY] ,<br />        CONSTRAINT [FK_VirusLog_Handset] FOREIGN KEY <br />        (<br />                [HandsetID]<br />        ) REFERENCES [Handset] (<br />                [HandsetID]<br />        ) ON DELETE CASCADE  NOT FOR REPLICATION <br />) ON [PRIMARY]<br />GO<br /><br /><br /><br />当表中记录为1700万时 使用select count(*) 都需要30s <br />而且只能在没有其它数据库操作的情况下<br /><br />觉得不可能<br /><br />就是不知道有没有提高性能的办法<br /><br />如主键的建立 还有其它的优化方法<br /><br />谢谢大家了<br /><br />到南京我请客  <!--emo&^_^--><img src='style_emoticons/default/happy.gif' border='0' style='vertical-align:middle' alt='happy.gif' /><!--endemo--> <br />

2005-6-29 09:29 seven
索引建了么?无双?<br /><br />还有select count(*) 这样的sql避免使用,效率很低,用select count(PRIMARY KEY),用key来作count!

2005-7-1 12:05 无双
索引建了 不过不是聚集索引 现在觉得可能跟硬盘有关系 ide的硬盘性能可能不高

2005-7-3 12:18 jxufe
把这个表单独绑定到指定的缓存

2005-7-4 10:45 无双
需要的内存太大了 先考虑scsi <!--emo&:P--><img src='style_emoticons/default/tongue.gif' border='0' style='vertical-align:middle' alt='tongue.gif' /><!--endemo-->

2005-7-4 10:48 瓜小南
CPU的主频<br />和IO速度是关键

2005-7-7 09:12 johnason
如果其他的参数都调整完毕的话个人意见注意一下IO,前几天调了一个库发现最终的瓶颈就是在IO上130多万的查询居然要10s以上

2005-7-11 03:02 jxufe
把数据分到多个硬盘上如何?

2005-9-30 10:47 zhaopingzi
把表分段试试

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.