臆测一下,十倍。
为什么说是臆测呢,因为我猜这并不是问很极端的情况。
详细说来,拆解每个查询消耗的时间,并不是每个步骤都与行数有关。
查1行,查10行,网络通讯都是占大部分时间,所以是10倍。
但是,如果你一次查10w行,并不会比10w次1行快10w倍,因为大数据量查询本来就慢。
延伸一下,以前我们做过一个优化,又来用这个case连续讲了4-5年。
这是一个UPDATE table SET col = col + N WHERE key = 的查询,大概有5k QPS左右,跑不动。
改成了UPDATE table SET col = col + 1 WHERE key IN (, , )的样子,数据库CPU从40%降到1%。
这个改变没有改变任何索引使用和网络传输,是不常见的,解析SQL瓶颈。
写这个例子,是要说,优化要根据具体情况分析,数据量和使用情况都会影响结论。
SQL Server查询前N条记录:
因为id可能不是连续的,所以不能用取得10<id<20的记录的方法。
有三种方法可以实现:
一、搜索前20条记录,指定不包括前10条
语句:
select top 20 from tbl where id not in (select top 10 id from tbl)
二、搜索记录生成临时表,建立临时表的自增id。通过取得自增id的10<id<20的记录的方法取得所需数据
语句:
select identity(int,1,1) as id, into #temp from tbl;
select from #temp where id between 10 and 20
第二个方法实际上是两条语句,但你可以让他连续执行,就像一条语句一样完成任务。
三、如果觉得第一种方法效率太低,经过讨论,得出第三种方法:
语句:
SELECT TOP 10 FROM (SELECT TOP 20 FROM tblORDER BY id) as tbl2 ORDER BY tbl2id DESC
1、通过rownum对数据库的记录进行编号
SELECT ROWNUM RN1,A FROM A;//从表A中获取记录,并用rownum生成RN12、通过RN1的标记进行倒序排序
SELECT B,ROWNUM RN2 FROM (SELECT ROWNUM RN1,A FROM A) ORDER BY RN1 DESC;3、通过RN2取小于等于10的数据记录
SELECT FROM (SELECT B,ROWNUM RN2 FROM (SELECT ROWNUM RN1,A FROM A) ORDER BY RN1 DESC) WHERE RN2<=10;以上就是关于mysql 每次查询一条数据查10次 和一次查询10条数据效率有多少差距全部的内容,包括:mysql 每次查询一条数据查10次 和一次查询10条数据效率有多少差距、查询数据库中的前10条记录、oracle 怎么查询 一个表中的 最后 10条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)