当前位置: 首页 > 科技观察

除了不会SELECT-,数据库还有哪些技巧

时间:2023-03-23 11:50:34 科技观察

应用慢如牛,原因有很多,可能是网络的原因,也可能是系统架构的原因,也可能是数据库的原因。那么如何提高数据库SQL语句的执行速度呢?有人会说性能调优是数据库管理员(DBA)的工作,但是性能调优与程序员有很大关系。如果对程序中嵌入的逐行SQL语句使用一些优化技术,一定会达到事半功倍的效果。Tip1比较运算符可以用“=”代替“<>”,“=”增加使用索引的概率。Tip2知道只有一个查询结果,请使用“LIMIT1”和“LIMIT1”避免全表扫描。如果找到对应的结果,则不会继续扫描。技巧3为列选择合适的数据类型。如果可以使用TINYINT,则不需要SMALLINT,如果可以使用SMALLINT,则不需要INT。道理你懂的,磁盘和内存消耗越小越好。技巧4将一个大的DELETE、UPDATE或INSERT查询变成多个小查询。能写出几十行、上百行的SQL语句,是不是很有说服力?然而,为了更好的性能和更好的数据控制,您可以将它们分解成多个小查询。技巧5使用UNIONALL而不是UNION。如果结果集允许重复,因为UNIONALL不去重,效率比UNION高。Tip6为了获取同一个结果集的多次执行,请保持SQL语句一致。这样做的目的是充分利用查询缓冲区。比如根据region和productid查询商品价格,第一次使用:然后第二次同样查询,请保持上面语句的一致性,比如id和region的顺序不要调换哪里声明。Tip7尽量避免使用“SELECT*”如果不查询表中的所有列,尽量避免使用SELECT*,因为它会进行全表扫描,不能有效使用索引,增加表的负担数据库服务器,以及它与应用程序客户端之间网络IO开销的关系。Tip8WHERE子句中的列应该尽可能的建立索引,但不是所有的列。因地制宜,根据实际情况进行调整,因为有时候指标太多也会降低性能。Tip9JOIN子句中的列应该尽可能的建立索引,只是“尽可能”,而不是所有的列。Tip10ORDERBY列应尽可能建立索引如果ORDERBY列建立索引,性能会更好。Tip11使用LIMIT实现分页逻辑不仅可以提高性能,还可以减少数据库和应用程序之间不必要的网络传输。Tip12使用EXPLAIN关键字查看执行计划EXPLAIN可以查看索引使用情况和扫描的行数。还有很多其他的SQL调优方式,对于同一个查询结果,也有很多不同的查询方式。其实最好的办法是在开发环境用最接近真实的数据集和硬件环境进行测试,然后发布到生产环境。