表singer:
singerID,singerName
1,刘德华
2,张学友
3,郭富城
4,黎明表song:
songID,songName,singerID
1,忘情水,1
2,中国人,1
3,吻别,2
4,对你爱不完,3
5,今夜你会不会来,4我想查找刘德华的歌曲,有两种sql语句:
1.两表连接select song.songName
from song,singer
where song.singerID = singer.singerID
and singer.singerName = '刘德华'
2.嵌套select songName
from song
where singerID = (select singerID from singer where singerName = '刘德华')在数据量很大的情况是,是连接表更快还是嵌套更快?
谢谢!
singerID,singerName
1,刘德华
2,张学友
3,郭富城
4,黎明表song:
songID,songName,singerID
1,忘情水,1
2,中国人,1
3,吻别,2
4,对你爱不完,3
5,今夜你会不会来,4我想查找刘德华的歌曲,有两种sql语句:
1.两表连接select song.songName
from song,singer
where song.singerID = singer.singerID
and singer.singerName = '刘德华'
2.嵌套select songName
from song
where singerID = (select singerID from singer where singerName = '刘德华')在数据量很大的情况是,是连接表更快还是嵌套更快?
谢谢!
解决方案 »
- 如何在同一个表中复制数据
- 统计两个相关联的数据表,如何把没有数据的列设置为0
- 三表关联语法
- SQL客户访问日志如何查询?
- 取出excel中的所有sheet表名的sql语句怎么写?
- 两个网站访问同一个数据库,重启其一网站iis出现问题!!
- 〓〓>==→Access报表中的数值字段,要去掉小数点后的低位0,如0.40,要显示成0.4,应该用什么格式?急,请赐教.
- 累死了!有好的办法吗?将300个表的表名加上前缀t_相关的程序中的表名也要加上前缀t_
- 在番茄花园的XP操作系统下安装SQL SERVER 2000开发版本,总是报有一个挂起的SQL SEVER程序
- 请高手们给我指一条明路
- 简单select问题
- 这样的一个需求该怎么写存储过程呢?
select * from icstockbillentry
--171010条记录,用时:45s
---------------
--测试join方案用时
-------------------
declare @d datetime
set @d=getdate()
select b.fnote
from icstockbill a,icstockbillentry b
where a.finterid=b.finterid
and a.fbillno='JIN011320'
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())/*
语句执行花费时间(毫秒)
------------
6(所影响的行数为 1 行)
*/declare @d datetime
set @d=getdate()
select fnote
from icstockbillentry
where finterid=(select finterid from icstockbill where fbillno='JIN011320')
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
/*
语句执行花费时间(毫秒)
------------
5(所影响的行数为 1 行)
*/我测试差不多.
--171010条记录,用时:45s
---------------
--测试join方案用时
-------------------
DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
SET Statistics IO ON
GO
declare @d datetime
set @d=getdate()
select song.songName
from song,singer
where song.singerID = singer.singerID
and singer.singerName = '刘德华'
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
SET Statistics IO OFF
GO/*
语句执行花费时间(毫秒)
------------
?(所影响的行数为 1 行)
*/
--------------
--测试嵌套方案
------------------
DBCC FREEPROCCACHE
GO
DBCC DROPCLEANBUFFERS
GO
SET Statistics IO ON
GO
declare @d datetime
set @d=getdate()
select songName
from song
where singerID = (select singerID from singer where singerName = '刘德华')
select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())
SET Statistics IO OFF
GO
/*
语句执行花费时间(毫秒)
------------
?(所影响的行数为 1 行)
*/
oracle那边发帖问这个问题 答案也不同意