首页 > 数据库 >sql优化

sql优化

时间:2022-11-19 11:03:45浏览次数:37  
标签:语句 where sql 使用 索引 SQL 优化


 

以下针对mysql数据库

 

sql优化方式:

1 设计合理的数据表结构

2 对数据表建立合适有效的数据库索引

3 编写简洁高效的SQL语句

--------------------------------------

表结构设计:

选择合适的数据类型:如果能够定长尽量定长;

不要使用无法加索引的类型作为关键字段,比如 text类型;

最好给每个字段都设定 default 值

尽可能的使用 NOT NULL填充数据库。

 

索引设计:

一般针对数据分散的关键字进行建立索引;

大文本字段不建立为索引,如果要对大文本字段进行检索,可以考虑全文索引;

order by 字句中的字段,where 子句中字段,最常用的sql语句中字段,应建立索引。唯一性约束,系统将默认为改字段建立索引;

 

索引不仅能提高查询SQL性能,同时也可以提高带where字句的update,Delete SQL性能。

 

 

高效SQL;

能够快速缩小结果集的 WHERE 条件写在前面,如果有恒量条件,也尽量放在前面;

针对索引字段使用 >, >=, =, <, <=, IF NULL和BETWEEN 将会使用索引,如果对某个索引字段进行 LIKE 查询,使用 LIKE  ‘%abc%’; 不能使用索引,使用 LIKE ‘abc%’;

不要在where 子句中的“=”左边进行算术或表达式运算,否则系统将可能无法正确使用索引;

尽量不要在where条件中使用函数,否则将不能使用索引。

当只要一行数据时使用 LIMIT 1。

拆分大的 DELETE 或 INSERT 语句;批量提交SQL语句。

 

标签:语句,where,sql,使用,索引,SQL,优化
From: https://blog.51cto.com/u_15458282/5870337

相关文章

  • 主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技
    主动打包:逐浪HMS主题大师1.3-即速推送、华为小组件缓存优化、锁屏提取、资源审计、技术秘笈,移动主题设计利器逐浪HMS主题大师介绍软件架构使用环境启动使用捐赠我......
  • 前端面试题:如何进行前端的性能优化?
    一、DOM层面的优化1.减少重绘和重排2.使用事件委托3.函数的防抖与节流4.requestAnimationFrame(),将数据进行分割,分批次渲染,减少JS的连续运行时间......
  • Mysql命令行使用source执行.sql文件报错
    问题描述在windows上,使用命令行登录mysql,使用source命令执行xxx.sql文件,报错。将文件里的内容粘贴在命令行可以正确执行。原因连接mysql时没有设置编码解决mysql-u......
  • PostgreSQL里TID(对应于oracle里的rowid)
    Toidentifyatuplewithinthetable,tupleidentifier(TID)isinternallyused.ATIDcomprisesapairofvalues:theblocknumberofthepagethatcontainst......
  • 2022-11-17 mysql列存储引擎-聚合中间缓存结果-分析
    摘要:mysql列存储引擎-聚合中间缓存结果-分析DML:TPCH表使用Q16selectp_brand,p_type,p_size,count(distinctps_suppkey)assupplier_cntfrompartsupp,partwh......
  • 解决MySQL使用limit偏移量较大效率慢的问题
    备注:第二个方法妥妥的问题描述在MySQL中,LIMITOFFSET偏移量特别大时,效率会非常低如果说LIMIT1000,10,一个偏移量很小的值,一般是没有问题的。但是,比如说,LIMIT10000000,10......
  • Mysql批量更新性能优化学习
    转自:https://juejin.cn/post/70435968558290698611.更新对表做多行更新的时候通常会遇到以下两种情况:单语句批量更新(updatea=a+1wherepk>500)多语句批量更新(updat......
  • Mysql批量插入性能优化学习
    转自:https://www.cnblogs.com/myseries/p/11191134.html1.批量insert1.1一条sql将单条insert改为批量insert,其实个人认为改为replaceinto更好,批量insert时,如果其中一......
  • MySQL启动时自动创建数据库
    一、背景及分析MysqL容器启动时,会自动创建一些必要的数据库,比如MysqL,这是官方默认的做法。但是,在实际中,还需要让MysqL自动创建我们自定义的数据库。本文就此应用场合进行......
  • MySQL关联查询
    一、关联查询1、概念在查询数据时,所需要的数据不只在一张表中,可能在两张或多张表中。这个时候,需要同时操作这些表来查询数据,即关联查询。关联查询所涉及到的表与表之间都......