回 帖 发 新 帖 刷新版面

主题:问个SQL语句.

求思路:
问:有100条记录.ID为自动编号.而且ID不保证总是一个连续值.取出前10~20(含)条记录.我想问问大家有没有NB一点的方法.要求一条SQL语句搞定.

(当时由于面试中,随手答了一句)
Select Top 20 * FROM 表 Where ID not in (Select TOP 9 ID FROM 表)
(后来感觉此答案很垃圾.效率好像不是很高.又想不出别的.向大家请教.没有限定数据库类型.给些提示就行.但是要求一行写出.)

回复列表 (共14个回复)

11 楼

1、确实,用in (select..) 或者 not in 的方式的执行效率非常低,所以我在6楼最后写的程序中没有采用,而是用From (select...),从第一步就把记录集减少。

2、从实际的使用角度来讲,一般很少会把15万条数据显示在页面上吧?也就显示50条以内。以我实际经验来看,MS-SQL数据库、6位数量级,有三个左右的 in (Select),速度还是很快的。毕竟MS-SQL是以TB容量为基本目标的数据库。

3、一个应用系统的效率要综合考虑,除了SQL,还有服务端脚本、客户端代码量、网络带宽、响应速度、CPU、内存等等,很多方面。

12 楼

欢迎继续~

13 楼

还继续?!
黔驴技穷了!

14 楼

呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册