mysql数据库: 为啥sql语句在查询分析中的执行速度远远快于在应用程序的(而且有时候后者慢的很多)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql数据库: 为啥sql语句在查询分析中的执行速度远远快于在应用程序的(而且有时候后者慢的很多)相关的知识,希望对你有一定的参考价值。

在程序中同一个sql语句第一次执行时间是0.001,第二次执行时间是0.1数量级的,而且sql语句本身执行所需时间至少在0.0001数量级,数据库在本地,难道只是数据库连接浪费了用掉了这些时间(刚看了下框架中源码,sql语句执行的时间统计的是从数据库连接后到sql语句执行完的时间),提这个问题的目的是想了解一些与此相关的底层一些的东西,或者能得到一些思路,最终可以对这类查询进行优化

查询分析的执行速度快于应用程序,主要原因在于应用程序查询的时候,需要调用对应的数据库接口驱动程序,如odbc,jdbc等,使得应用程序能够与数据库本身能够交互,这一块一般无法进行优化,可以优化的地方一般是在建立数据库的时候,数据库的逻辑结构和物理结构的优劣直接影响一个系统的性能如何。 参考技术A 为什么找老婆借钱比照别人借钱,效率快很多?因为老婆是自己人。
你用sql语句查,那是自家查自家。
应用程序需要1.连接2.命令3.接收结果,不考虑数据处理其他打开关闭什么的,就比sql语句多了2步。
如举例,你要有个朋友(有钱的情况),然后借钱,结果还不一定能接到。
而老婆,她又没有钱你知道,她不可能不给你钱而饿着你,结果是一定借到还不用还。
sql语句就像是原配的老婆,继承在数据库操作平台中,不快还得了啊。
应用程序:
万一连接写错了,报错,命令写错了报错,结果接收不不如意,这都要考虑(简单的try catch 也影响性能)。
还有一个最致命的问题,你连的未必是本地数据库,这又牵扯到网速问题。
综上所述,慢是必然的,尤其是mysql,在配置优化和存储过程上多下点功夫,会提高点查询速度。本回答被提问者采纳
参考技术B 首先顶一下楼上的。这也是很多大型数据作业基本90%都是采用SQL服务器端自己查自己。而不是将计算处理让客户端来完成。否则效率和性能都很低下。一般数据查询方面基本上都是采用存储过程,函数,触发器,视图等对象直接达到预想的目的。毕竟这些程序都是服务器自己在查询自己。效率和性能与程序本身差异肯定是很大的。 参考技术C 楼上说法大概正确吧
首先,在数据库里你已经登录过了,直接输入直接得到结果
而程序里你首先是要登录数据库,然后查,最后还得返回
这样说应该比较好理解点

sql查询语句的各个命令执行的标准顺序是啥?为啥?

参考技术A 查询语句是sql语句中使用最多的操作,也涉及到非常多的命令。比如where过滤,groupby分组,order
by
排序
limit取值
having等。虽然多,但是各个命令执行的时候却是有顺序的,顺序如下:select
*from
表名①--
where
条件1②--
group
by
依据列③--
having
条件2④--
order
by
依据列⑤--
limit
0,1为什么是这么个顺序,原因:limit取值永远是最后一个.如果你要order
by排序,前提是要首先得到一个查询结果.查询结果中的三个关键词,where总是是放在表名的后面,而havin过滤永远是放在group后面,所以就有了这么个顺序.如果不遵循顺序,就会出现错误。

以上是关于mysql数据库: 为啥sql语句在查询分析中的执行速度远远快于在应用程序的(而且有时候后者慢的很多)的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中为啥不能在select语句中使用into将查询结果存入新表,但是SQL sever可以

mysql查询in为啥用不上索引

为啥php中sql语句查询数据库输出的全是array?

sql查询语句的各个命令执行的标准顺序是啥?为啥?

sql查询语句的各个命令执行的标准顺序是啥?为啥?

mysql如何查询SQL中哪些语句执行最占用CPU?