有关SQL时间复杂度的问题,请指教。

Guizhi 2008-05-15 11:40:15
怎么估算出每个SQL语句的时间复杂度呢?

例如,有两个表 t1, t2, t1里有 100W数据,t2 里有20W数据,两者必须通过关键字 id来查询,能否估算出这个语句的时间复杂度呢???

select t1.*, t2.name
from t1, t2
where t1.id = t2.id

...全文
303 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
declspec 2011-07-01
  • 打赏
  • 举报
回复
顶,看看几位大牛怎么解释
yangxiao_jiang 2008-05-21
  • 打赏
  • 举报
回复
Ot = Nt1 * Nt2 如果没有索引
这个是你需要对两个表进行全表扫描,相当于进行了两个欠套循环,所以是*

如果有索引
Ot = Nt2 * Log2(Nt1),
是对第一个表进行扫描,使用索引,一般索引都是树结构,时间复杂度就是log2(nt1),整体的就是Nt2 * Log2(Nt1)


如果在不明白,去找本数据结构的书看看怎么计算时间复杂度。
sunday_bj 2008-05-21
  • 打赏
  • 举报
回复
时间复杂度?看不明白
Guizhi 2008-05-21
  • 打赏
  • 举报
回复
还是不是太懂,能具体说说,这怎么来的吗?
xbt746 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liuyann 的回复:]
时间复杂度

Ot = Nt1 * Nt2 如果没有索引


====思想重于技巧====

reply via CSDN viewer
[/Quote]
liuyann 2008-05-16
  • 打赏
  • 举报
回复

时间复杂度

如果有索引
Ot = Nt2 * Log2(Nt1), 如果考虑mySQL的索引具体方式,理论上会更小一些,但只是估算用这个就行了。


==== ====

liuyann 2008-05-16
  • 打赏
  • 举报
回复

时间复杂度

Ot = Nt1 * Nt2 如果没有索引


==== ====

懒得去死 2008-05-16
  • 打赏
  • 举报
回复
1、先用规划器看一下扫描的行数。
2、运行时间可以加上 where 0.忘了怎么算时间复杂度了。
通过慢sql分析的学习,了解什么是慢sql,以及慢SQL会引起那些性能问题。清楚慢sql日志的设置,然后再通过慢sql分析工具的学习,清楚慢sql分析的步骤和流程。慢sql分析工具:mysqldumpslow工具、explain工具、profile工具、Optimizer Trace工具。 提供课程中所使用的sql语句。 课程内容:第一章:课程简介1、课程介绍2、课程大纲 第二章:慢sql简介1、慢sql简介2、慢sql会引起的问题 第三章:慢日志的设置1、慢sql的分析流程2、慢日志参数理解3、慢日志参数设置:第1种方式:my.ini文件设置4、慢日志参数设置:第2种方式:sql脚本设置5、慢日志参数设置-效果验证 第四章:如何发现慢sql1、如何发现慢sql:第1种方式:慢日志文件2、如何发现慢sql:第2种方式:mysql库的slow_log表 第五章:慢sql分析工具1、慢sql提取-mysqldumpslow工具-使用方法2、慢sql提取-mysqldumpslow工具-操作实战3、慢sql的执行计划分析-explain分析-执行计划结果说明4、慢sql的执行计划分析-explain分析-索引介绍+type类型举例5、慢sql的资源开销分析-profile分析-分析步骤6、慢sql的资源开销分析-profile分析-show profile执行阶段说明7、慢sql的资源开销分析-profile分析-完整列表说明+操作实战8、慢sql的跟踪分析-Optimizer Trace分析-分析步骤9、慢sql的跟踪分析-Optimizer Trace表的介绍10、索引失效场景举例 第六章:慢日志清理1、慢日志清理

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧