有关SQL时间复杂度的问题,请指教。 怎么估算出每个SQL语句的时间复杂度呢?例如,有两个表 t1, t2, t1里有 100W数据,t2 里有20W数据,两者必须通过关键字 id来查询,能否估算出这个语句的时间复杂度呢???select t1.*, t2.namefrom t1, t2where t1.id = t2.id 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、先用规划器看一下扫描的行数。2、运行时间可以加上 where 0.忘了怎么算时间复杂度了。 时间复杂度Ot = Nt1 * Nt2 如果没有索引 [align=center]==== 思想重于技巧 ====[/align] reply via CSDN viewer 时间复杂度如果有索引Ot = Nt2 * Log2(Nt1), 如果考虑mySQL的索引具体方式,理论上会更小一些,但只是估算用这个就行了。 [align=center]==== 思想重于技巧 ====[/align] reply via CSDN viewer Ot = Nt1 * Nt2 如果没有索引 这个是你需要对两个表进行全表扫描,相当于进行了两个欠套循环,所以是*如果有索引Ot = Nt2 * Log2(Nt1),是对第一个表进行扫描,使用索引,一般索引都是树结构,时间复杂度就是log2(nt1),整体的就是Nt2 * Log2(Nt1)如果在不明白,去找本数据结构的书看看怎么计算时间复杂度。 这个sql语句应该怎么改进? 如果在MYSQL管理器中查看数据库连接情况? mysql创建表问题 Mysql无法启动 postgres如何写存储过程,望各位帮忙,给一个相关实例 各位老大,postgres数据库,字段问题 有没有sql语句能够判断某个表是否存在? 这个SQL怎么优化 mysql5.6存储过程中是否能支持GOTO mysql与Java连接 返回刚插入的ID值 请问mysql 锁等待设置方法
2、运行时间可以加上 where 0.忘了怎么算时间复杂度了。
[/align]
Ot = Nt2 * Log2(Nt1), 如果考虑mySQL的索引具体方式,理论上会更小一些,但只是估算用这个就行了。 [align=center]==== 思想重于技巧 ====
[/align]
这个是你需要对两个表进行全表扫描,相当于进行了两个欠套循环,所以是*如果有索引
Ot = Nt2 * Log2(Nt1),
是对第一个表进行扫描,使用索引,一般索引都是树结构,时间复杂度就是log2(nt1),整体的就是Nt2 * Log2(Nt1)
如果在不明白,去找本数据结构的书看看怎么计算时间复杂度。