您的位置:首页 > 游戏 > 手游 > 广告公司怎么取名字_室内装修公司排行_国家提供的免费网课平台_sem外包

广告公司怎么取名字_室内装修公司排行_国家提供的免费网课平台_sem外包

2025/1/5 11:02:58 来源:https://blog.csdn.net/zhuguoli200851/article/details/144823287  浏览:    关键词:广告公司怎么取名字_室内装修公司排行_国家提供的免费网课平台_sem外包
广告公司怎么取名字_室内装修公司排行_国家提供的免费网课平台_sem外包

查询执行缓慢的最大共因是缺少索引,explain命令以查看SQL的执行计划,进而有的放矢。

这里分享三个优化技巧

第一、添加索引

根据执行计划添加必要的索引,充分利用索引,可以解决大部分的SQL查询缓慢。

第二、条件查询减少类型转换,匹配正确的数据类型

MySQL中一个长期存在的问题是连接中的类型不匹配。如果您有一个a JOIN b ON a.col1 = b.col1的查询,两个表中的col1具有不兼容(不同且不可强制)的类型,则不能使用索引来解析查询,即使它存在。也就是说,如果col1a中的varchar,但在b中是int,则连接将很慢。

这个问题也经常在WHERE子句中引发,例如WHERE a.col1 = "value",其中a.col1是整数,"value"由于引号而写成字符串文字。同样,索引,即使存在,也不会被使用。

第三、糟糕的分页

SELECT id FROM Whatever LIMIT 10360000,10000分页查询为例,其中用户要查询10000条数据记录。

这不是一个有效的做法,因为数据库必须一遍又一遍地执行相同的查询。它可能能够对低限制值(在分页开始时)应用一些温和的优化,但最终它将不得不查询整个表的大部分。最重要的是,MySQL在内部使用链表表示结果集,因此具有大偏移值的LIMIT子句效率非常低。

我们可以在按表自然顺序读取时再拉取一行数据。这将获得LIMIT子句中的偏移部分。它不必物理排序,因为表是按自然主键顺序读取的。它只会访问表的10000条记录片段。

select id from Whatever order by id limit 10001 

我们输出10000条记录,并以最后的记录id值作为新的起点lastid

select id from Whatever where id >= :lastid order by id limit 10001

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com