|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
支持多种存储引擎。办理|速率上面是我多年履历的总结:收集编程总要和数据库打交道。和数据库打交道总要打仗到SQL。怎样使你的SQL跑得快一点,本文先容几种卓有成效的办法:办法1、只管利用庞大的SQL来取代复杂的一堆SQL.一样的事件,一个庞大的SQL完成的效力高于一堆复杂SQL完成的效力。有多个查询时,要擅长利用JOIN。oRs=objDBC.Execute(‘SELECT*FROMBooks‘)for(;!oRs.Eof;oRs.MoveNext()){oRs2=objDBC.Execute(‘SELECT*FROMAuthorsWHEREAuthorID=‘‘+oRs(‘AuthorID‘).value+‘‘‘);Response.write(oRs(‘Title‘).value+‘‘+oRs2(‘Name‘)+‘<br>‘);}要比上面的代码慢:oRs=objDBC.Execute(‘SELECTBooks.Title,Authors.NameFROMBooksJOINAuthorsONAuthors.AuthorID=Books.AuthorID‘);for(;!oRs.Eof;oRs.MoveNext()){Response.write(oRs(‘Title‘).value+‘‘+oRs(‘Name‘)+‘<br>‘);}办法2、只管制止利用可更新RecordsetoRs=objDBC.Execute(‘SELECT*FROMAuthorsWHEREAuthorID=17‘,(someflags));oRs(‘Name‘)=‘KarlKarlsson‘;oRs.Update();要比上面的代码慢:objDBC.Execute(‘UPDATEAuthorsSETName=‘KarlKarlsson‘WHEREAuthorID=17‘);办法3、更新数据库时,只管接纳批处置更新将一切的SQL构成一个年夜的批处置SQL,并一次运转;这比一个一个地更新数据要无效率很多。如许也加倍满意你举行事件处置的必要:(inJScript)strSQL=‘‘;strSQL+=‘SETXACT_ABORTON
‘;strSQL+=‘BEGINTRANSACTION
‘;strSQL+=‘INSERTINTOOrders(OrdID,CustID,OrdDat)VALUES(‘9999‘,‘1234‘,GETDATE())
‘;strSQL+=‘INSERTINTOOrderRows(OrdID,OrdRow,Item,Qty)VALUES(‘9999‘,‘01‘,‘G4385‘,5)
‘;strSQL+=‘INSERTINTOOrderRows(OrdID,OrdRow,Item,Qty)VALUES(‘9999‘,‘02‘,‘G4726‘,1)
‘;strSQL+=‘COMMITTRANSACTION
‘;strSQL+=‘SETXACT_ABORTOFF
‘;objDBC.Execute(strSQL);个中,SETXACT_ABORTOFF语句告知SQLServer,假如上面的事件处置过程当中,假如碰到毛病,就作废已完成的事件。办法4、数据库索引办法5、制止使Text字段太年夜当字符串的值巨细不流动时,用varchar比用char的效果要好些。我已经看到一个例子程序,字段被界说为TEXT(255),可是他的取值常常只要20个字符。这个数据表有50k个纪录,从而使这个数据库很年夜,年夜的数据库一定较慢。
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。 |
|