惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
The Blog of Author Tim Ferriss
S
Schneier on Security
H
Help Net Security
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
H
Hacker News: Front Page
C
Check Point Blog
P
Privacy International News Feed
IT之家
IT之家
爱范儿
爱范儿
AWS News Blog
AWS News Blog
The Hacker News
The Hacker News
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
Microsoft Azure Blog
Microsoft Azure Blog
量子位
The Cloudflare Blog
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
C
Cybersecurity and Infrastructure Security Agency CISA
I
Intezer
Martin Fowler
Martin Fowler
Scott Helme
Scott Helme
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
T
Threat Research - Cisco Blogs
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
B
Blog
Simon Willison's Weblog
Simon Willison's Weblog
U
Unit 42
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
博客园_首页
J
Java Code Geeks
K
Kaspersky official blog
Webroot Blog
Webroot Blog
C
CERT Recently Published Vulnerability Notes
H
Heimdal Security Blog
G
Google Developers Blog
T
Tor Project blog
W
WeLiveSecurity
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Blog — PlanetScale
Blog — PlanetScale
小众软件
小众软件
有赞技术团队
有赞技术团队

博客园 - TwinStudio

Stable Diffusion AI 绘画使用 chartGPT 是什么?如何使用chartGPT? ChatGPT指令大全(建议收藏) Vue3开发教程(一、学习Vue前需要了解的内容) mysql用mysqldump命令进行数据库备份与迁移 领导更喜欢的日报,长这样 Vue3快速上手,Vue3全解 MySQL优化常用的19种有效方法(推荐!) idea常用快捷键大全 Cisco Systems VPN Client 显示不出 主界面 怎么点都打不开。我重装过了。又重新安装了。也没用 360也把他添加白名单 也显示不出= = - TwinStudio PL/SQL 工具中 TIMESTAMP 显示转换问题 oracle存储过程和存储函数sql 基于Azkaban的任务定时调度实践 帆软报表开发步骤 Oracle归档日志分析 Oracle查询归档日志 帆软设置浏览内容宽度为屏幕宽度 JS修改下拉框控件的默认文字“不选” 帆软设置下拉框参数为空选择全部
MySQL的优化多种方法(至少15条)
TwinStudio · 2022-07-30 · via 博客园 - TwinStudio

MYSQL的优化,是每一个程序员在做数据查询处理的时候,经常有的步骤
那么SQL的优化有很多种,它可以是在硬件方面的,可以是在代码层面的,可以是在数据库方面的优化。下面就详细整理一下30种优化MYSQL的方案:

1. 在读表的时候,尽可能的避免全表扫描,合理的根据业务需求,在whereorder by涉及的列上建立索引。

2. 应尽量避免在where字句中使用!= 或 <> 操作符,否则将引擎会放弃索引而走全表扫描。

3. 尽量避免where字句中对字段进行null值判断,否则也会导致引擎放弃索引而走全表扫描。可以用0代替判断,前提是保证字段不能为null。

4. 尽量避免在where字句中用or拼接,否则也会走全表扫描。可以通过union all 拼接代替。

5. 尽量不适用Like做搜索查询,诺要提高效率,可以采用全文检索。

6. 尽量不适用In 或 Not in查询,否则会导致全表扫描。对于连续的数字,可以用between 代替 in。比如:select id from t where num between 1 and 3

7. 如果在where字句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。比如:select id from t where num=@num
** 可以改为强制查询使用索引:select id from t with(index(索引名)) where num=@num**

8. 尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。比如:select id from t where num/2=100

9. 应尽量避免在where子句中对字段进行函数操作。

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

11. 并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段 sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。

12. 索引并不是越多越好,索引固然可以提高相应的 select 的效率,但同时也降低了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考虑,视具体情况而定。一个表的索引数最好不要超过6个,若太多则应考虑一些不常使用到的列上建的索引是否有 必要。

13. 应尽可能的避免更新 clustered (聚集)索引数据列,因为 clustered 索引数据列的顺序就是表记录的物理存储顺序,一旦该列值改变将导致整个表记录的顺序的调整,会耗费相当大的资源。若应用系统需要频繁更新 clustered 索引数据列,那么需要考虑是否应将该索引建为 clustered 索引。一个表只能有一个聚集索引,比如表中的时间列。

14. 尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。这是因为引擎在处理查询和连接时会 逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。

15. 尽可能的使用 varchar/nvarchar 代替 char/nchar ,因为首先变长字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

16. 尽量不要select查询*全部信息,只读取所需要的字段。

17. 避免频繁创建和删除临时表,以减少系统表资源的消耗。

18. 在新建临时表时,如果一次性插入数据量很大,那么可以使用 select into 代替 create table,避免造成大量 log ,以提高速度;如果数据量不大,为了缓和系统表的资源,应先create table,然后insert

19. 尽量避免大事务操作,提高系统并发能力。

20. 尽量避免向客户端返回大数据量,若数据量过大,应该考虑相应需求是否合理。

21. 升级服务器