宝哥软件园

大型业务系统数据库管理经验总结

编辑:宝哥软件园 来源:互联网 时间:2021-08-05

类型:数据库类大小:660KB语言:中文评分:5.0标签:巨大的业务系统后面马上下载,必须有数据库管理系统支持。在以数据为中心的现代开发时代,SQL编程尤为重要。下面总结了我最近在SQL编程方面的经验:1。选择查询应列出所有要查询的字段;2.注意UNION和UNION ALL之间的区别。在OR和UNION ALL中的三种方案中,UNION ALL的执行效率最高。3.视图定义应该尽可能简单,最好不要包含业务逻辑。比如在一个业务系统中,单据有多种状态,所以在系统对系统的交互过程中,两边的状态码可能定义不同,所以需要映射。在这种情况下,强烈建议不要将此映射放在视图定义或SQL查询中,因为这会降低查询的性能。4.表变量和临时表的选择。表变量将数据存储在数据库服务的内存中,而临时表将数据存储在数据库服务器的磁盘上,会产生I/O,因此,临时表消耗的数据较多,性能较差。一般来说,建议使用表变量。如果数据量大(选择字段多,数据录入超过10W),需要重复使用的建议使用临时表。5.在表变量上设计主键是有益无害的,尤其是在临时表上。设计主键的主要目的是有序存储数据,提高查询性能。6.把握内部连接和左/右连接的区别。选择好可以让SQL简洁高效。7.EXISTS的效率是IN的十倍。以下三个版本的效果,V1V2V3。-V1从dbo删除。MasterWHERE TransactionNumber IN(从dbo中选择原始交易编号。主历史与(无锁))-从dbo中删除V2DELETE。主位置存在(从数据库中选择1。master history b WITH(NOLOCK)WHERE b . original TransactionNumber=TransactionNumber)-v3 delete afromdbo。掌握内部连接dbo。a .交易号=b .原始交易号为8的主历史记录b(无锁定)。其中filter子句应该放在前面,具有高选择性,而放在后面,具有低选择性或没有选择性。join … ON中的JOIN条件要避免左右字段的类型转换,比如a.ItemNumber为NCHAR(25),b.ItemNumber为VARCHAR(25),会严重影响性能。解决方法是在设计阶段关注规范,暂时在JOIN … ON子句中做显式类型转换。另外,WHERE是一个筛选子句,JOIN … ON是一个JOIN语句。在JOIN … ON上写一个filter子句和在WHERE之后写没有区别,但是感觉这两个责任无法区分,代码不够优雅。

更多资讯
游戏推荐
更多+