mysql 每次查询一条数据查10次 和一次查询10条数据效率有多少差距

mysql 每次查询一条数据查10次 和一次查询10条数据效率有多少差距,第1张

臆测一下,十倍。

为什么说是臆测呢,因为我猜这并不是问很极端的情况。

详细说来,拆解每个查询消耗的时间,并不是每个步骤都与行数有关。

查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生成RN1

2、通过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条数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10203766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存