问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MySQL 联合索引与Where子句的优化 提高数据库运行效率

发布网友 发布时间:2022-04-07 16:16

我来回答

1个回答

热心网友 时间:2022-04-07 17:45

网站系统上线至今,数据量已经不知不觉上到500M,近8W记录了。涉及数据库操作的基本都是变得很慢了,用的人都会觉得躁火~~然后把这个情况在群里一贴,包括机器配置什么的一说,马上就有群友发话了,而且帮我确定了不是机器配置的问题,“深圳-*手”热心人他的机器512内存过百W的数据里也跑得飞快,甚至跟那些几W块的机器一样牛(吹过头了),呵呵~~~
  在群友的分析指点下,尝试把排序、条件等一个一个去除来做测试,结果发现问题就出在排序部分,去除排序的时候,执行时间由原来的48秒变成0.3x秒,这是个什么档次的变化呀~~看着这个结果我激动ing.....
  于是我把涉及排序的字段组成一个联合索引alter
table
xx
add
index
indexname(x1,x2,x3),经过2分钟创建新索引之后再执行同一个SQL语句,哇塞0.28S。。。。爽
  于是按照同样的思路把其它几个常用的SQL作了过些优化,效果马上见效
  过了30分钟再查slow
sql记录文件,不好了,发现原来一个好好的SQL变得灰常慢了,神马情况?
  几经分析和测试原来就是因为添加了联合索引的原因,而且这个SQL语句当中有个or,当把这个or改用union之后问题排除。
  这回又得出一个心得:写SQL的时候千万别一时就手,随便写个就OK,那会为以为带来很严重的后果。
  再附上一段关于Where子句的执行顺序:
  在用MySQL查询数据库的时候,连接了很多个用,发现非常慢。例如:
  SELECT
...
WHERE
p.languages_id
=
1
AND
m.languages_id
=
1
AND
c.languages_id
=
1
AND
t.languages_id
=
1
AND
p.procts_id
IN
(472,474)
  这样查询需要20多秒,虽然在各个字段上都建立了索引。用分析Explain
SQL一分析,发现在第一次分析过程中就返回了几万条数据:
  WHERE
p.languages_id
=
1
,然后再依次根据条件,缩小范围。
  而我改变一下WHERE
字段的位置之后,速度就有了明显地提高:
  WHERE
p.procts_id
IN
(472,474)
AND
p.languages_id
=
1
AND
m.languages_id
=
1
AND
c.languages_id
=
1
AND
t.languages_id
=
1
  这样,第一次的条件是p.procts_id
IN
(472,474),它返回的结果只有不到10条,接下来还要根据其它的条件来过滤,自然在速度上有了较大的提升。
  经过实践发现,不要以为WHERE中的字段顺序无所谓,可以随便放在哪,应该尽可能地第一次就过滤掉大部分无用的数据,只返回最小范围的数据。
  希望能帮到有同样遭遇的朋友。
MySQL并发连接的优化方法提高数据库效率mysql一个连接并发

2. 调整 MySQL 运行参数 MySQL具有许多可调整的参数,使用正确的参数设置可以充分利用服务器的硬件资源,提高数据库的效率和性能。具体可设置的参数如下:设置 MySQL 数据库连接的最大数目,即同时可以接受的并发数 max_connections = 200 设置 MySQL 数据库最大连接数目之前允许执行的操作数 max_user_co...

ZESTRON表界面分析

在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸等关键领域,还通过高精度仪器如固体表面Zeta电位分析仪等,确保数据准确可靠。这些分析手段对于优化产品配方、改进生产工艺、预防失效问题等具有重要意义,是我们不断提升产品性能与质量的重要工具。表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面...

MySQL表索引优化技巧合理地创建和使用两张表的索引mysql两张表索引

索引是MySQL表中非常重要的功能之一,它可以提高查询效率和数据库性能。合理创建和使用两张表的索引可以减少查询时间和资源消耗,并提高MySQL服务器的稳定性和可靠性。为了获得最佳的查询结果,我们应该根据实际的查询需求,为每个表创建不同的索引,并遵循MySQL最佳实践的准则。

如何使用索引提高查询速度

--- where子句中对列的任何操作结果都是在SQL运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化器优化,使用索引,避免表搜索,因此将SQL重写成 下面这样: select * from record where card_no like '5378%'(< 1秒) select * from...

MySQL中关联表之间的关系解密mysql中关联

(4)使用索引连接:对于连接操作和包含WHERE子句的操作,使用目标列和索引列之间的等值比较进行连接,以尽可能减少I/O访问。使用此方法可以在磁盘上先定位索引,然后从索引中读取数据。(5)使用覆盖索引:在只包含索引列的查询结果集中满足查询需要的要求时,引擎就不必钟意数据的原表文件,而只需要基于索...

处理上百万条的数据库如何提高处理查询速度_MySQL

1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后...

MySQL括号应用优化查询效率mysql中包含括号

但是当查询数据量较大时,IN语句效率相对较低,此时可以使用括号结合OR来优化,例如:SELECT * FROM students WHERE (class=1 OR class=2 OR class=3)该查询语句与上述查询一致,用括号加OR的方式优化IN语句,提高查询效率。三、MySQL括号应用实例 示例1:查询每个班级成绩最好的学员的个人信息 SELECT ...

MYSQL数据库,如何用一条实现效率高的多结果查询。 就是要一条综合语句...

1.这一个比较快,其实这是把两个SQL 拼接成1个SQL,但是在拼接的时候使用了UNION ,这个过程会排序去重复,这一点上会影响性能。可以把UNION 改成UNION ALL,UNION ALL不会排序去重,可能效率会更好一点 2.这一个不会太快,因为使用in的话,默认是不使用索引的,那么这一个过程会全表扫描,那么...

为什么MySQL不建议建立主键索引mysql不建立主键索引

则数据库实际上会默认为该主键建立聚簇索引,这可能会导致存储空间的浪费。综上所述,虽然在很多情况下主键索引都是MySQL中最常用的索引类型,但我们也不能忽视使用主键索引时可能带来的问题。因此,在使用主键索引时,需要权衡各种因素,并根据具体情况进行选择,以优化查询性能,提高数据库的效率。

MySQL的一机多端口特性提高数据库效率mysql一机多端口

一定要在运行mysqld_multi命令前,先停止所有的MySQL实例。反之,如果在运行mysqld_multi命令时有MySQL实例正在运行,则会出现错误。结论 一机多端口的特性是MySQL的一个重要功能,可以提高数据库的效率、方便账号管理、复制和备份等。在实际应用中,根据需求可以配置多个实例,从而最大化地利用MySQL性能。

MySQL数据库读写速度的优化方法mysql数据库读写速度

此外,要确保MySQL数据库参数正确配置,如数据定义语言中的join_buffer_size参数,可以有效改善大规模数据查询的性能。综上所述,优化MySQL数据库读写速度有很多方法,比如使用索引优化表结构,使用MySQL服务器进行缓存,以及正确配置MySQL数据库系统参数等。通过使用以上方法,可以有效提高MySQL的读写速度。

数据库索引怎么优化 数据库索引的类型 数据库中索引的概念 数据库加索引的方法 mysql数据库索引 数据库索引有哪几种 数据库建立索引 数据库索引 数据库怎么创建索引
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见和同性发生关糸了 梦见和同性朋友发生亲密关系 学生党如何科学护肤? 学生党该怎么基础护肤? 有什么美容护肤的技巧适合学生党? 怎么@全部成员啊? 新洲摩尔城一楼小吃租金多少 武汉王家湾有哪些广场 你好 请问 晚上6点开始 学瑜伽 可以吗? 因为我想在下班时间去 锻炼锻 ... 电脑联网有哪些条件台式电脑无线上网需要具备哪些条件 修路算社区服务? 西安柳福玲社区门牌是啥? 宁夏石嘴山市大武口区包括哪几个县? 柳州哪些论坛人气旺? 梁辰瑜与许鹤宁哪个更有名 有谁知道华为手机内屏坏了换一个多少钱 宁波郡柳社区旧改,刚刚建好的改什么 想知道有没有技术比较好的钣金加工厂家呀?最近需要定‌制一批钣金外壳,求推‌荐。 钣金加工厂家哪家的加工质量好,有没有人了解呢? 换了个在拼多多下单了怎么看物流? 好状元平板安卓初始密码? 请问有没有人知道哪家钣金加工厂家的定制钣金外壳做的好? word怎么制作树形的公司结构图 杂牌平板电脑密码忘了,数字密码,开机加音量试过了,USB调试打不开咋办?急急急不知道别回复 杂牌平板没有音量键,忘记密码,怎么办(⊙_⊙?),没法用电脑,也暂时找不到售后服务……? 平板电脑忘记密码了怎么办? 钣金加工定制哪个厂家的靠谱? 我的是杂牌平板忘记密码了怎么才能解锁 请问哪里的钣金加工厂家比较好?求推荐。 山寨平板电脑开机密码忘了怎么办 银行发工资的微信通知怎么没提示音? 一个月该发工资了如何微信提醒老板发工资? 退休工资发放可微信提醒吗打电话可以吗? 工商银行微信能收到工资信息吗 如何将自己的工资卡与微信通知相联? 广告学学生的就业方向是什么 学广告学可以干什么工作 笔记本电脑的J、K、L键,变成数字的1、2、3了怎么办? 键盘打字按j 为什么变成1 笔记本上打拼音的J键怎么成数字1了 为什么笔记本电脑打J出来的是1? 键盘按J为什么变成1了? 笔记本电脑输入时在输J时输入成1则么办 笔记本电脑拿去修理后 键盘输入J打出来是1是怎么回事 电脑上j变成1怎么让他变成j 我的手提电脑为什么安J字母,显示的是1? 笔记本电脑键盘.按键不正确。按j,按出来是1.该怎么设置回来 电脑上打驾字按j怎么老是出来1呀 关于篮球个人训练 笔记本电脑打字打J变1。。