仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 894|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL编程:一条SQL语句变得巨慢的缘故原由及其办理办法...

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。<Pstyle="TEXT-INDENT:2em">征象:一条SQL俄然运转的出格慢。<Pstyle="TEXT-INDENT:2em">
  1. selectuidTable.column_value,first_namelast_name,company,job_title,upper(member_level),upper(service_value)from(select*fromtable(selectcast(multiset(selectbfrombbb)asTaaa)fromdual))uidTable,memberwhereuidTable.column_value=member.login_id(+)andmember.site=alibabaandmember.site=test;
复制代码
<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">堕落缘故原由:用户增添了一个前提member.site=test,形成毗连的按次变更了,本来的驱动表是uidTable(最多1024笔记录),如今酿成了member表做驱动(600W条)。以是这条语句变的巨慢。<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">可是既然是外毗连,为何毗连的按次会改动呢?由于外毗连的毗连按次不是由COST决意的,而是由毗连的前提决意的。发明实行企图以下:<Pstyle="TEXT-INDENT:2em">
  1. -------------------------------------------------------IdOperationNameRowsBytesCost--------------------------------------------------------0SELECTSTATEMENT10187227881551NESTEDLOOPS10187227881552VIEW407269224113COLLECTIONITERATORSUBQUERYFETCH4TABLEACCESSFULLDUAL4072115TABLEACCESSFULLBBB4128726TABLEACCESSBYINDEXROWIDMEMBER1542*7INDEXUNIQUESCANMEMBER_SITE_LID_PK41-------------------------------------------------
复制代码
<Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em"><Pstyle="TEXT-INDENT:2em">为何基本就没有实行外毗连呢?成绩出在member.site=test这个前提上,由于对外毗连的表加了前提,形成外毗连生效。改成member.site(+)=test后,成绩完全办理。<Pstyle="TEXT-INDENT:2em">
  1. ---------------------------------------------------IdOperationNameRowsBytesCost-----------------------------------------------------0SELECTSTATEMENT10187227881551NESTEDLOOPS10187227881552VIEW407269224113COLLECTIONITERATORSUBQUERYFETCH4TABLEACCESSFULLDUAL4072115TABLEACCESSFULLBBB4128726TABLEACCESSBYINDEXROWIDMEMBER1542*7INDEXUNIQUESCANMEMBER_SITE_LID_PK41-----------------------------------------------------------
复制代码
据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。
乐观 该用户已被删除
沙发
发表于 2015-1-19 05:25:29 | 只看该作者
大家注意一点。如下面的例子:
小魔女 该用户已被删除
板凳
发表于 2015-1-19 05:25:29 | 只看该作者
总感觉自己还是不会SQL
地板
发表于 2015-1-27 22:37:44 | 只看该作者
发几份SQL课件,以飨阅者
谁可相欹 该用户已被删除
5#
发表于 2015-2-5 15:35:12 | 只看该作者
作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-12 19:19:17 | 只看该作者
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。
只想知道 该用户已被删除
7#
发表于 2015-3-3 07:47:50 | 只看该作者
比如,MicrosoftSQLServer2008的某一个版本可以满足现在的这个业务的需要,而且价格还比Oracle11g要便宜,那么这一产品就是适合的。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-11 09:59:30 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-18 07:44:26 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 11:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表