sambeanyu 2010-07-30 16:04
浏览 207
已采纳

一个数据库操作的问题。。

加入有一个表 有 1万条数据
那么
select * from table

select * from table where 。。。一些条件
这2个SQL语句执行下来花费的时间是否一样?
为什么感觉select * 会慢很多,而有了where条件会很快?
就算你有where条件,也应该要把全部的数据过滤一遍啊
这个速度的差异在哪里呢?

  • 写回答

3条回答 默认 最新

  • wwty1314 2010-07-30 16:19
    关注

    呵呵,你本身的观点是正确的,确实都过滤了一遍,只是你没有考虑到数据传输的以及io的因素,比如你用数据库的客户端工具,如果再加上你是客户端远程连接数据库,那么不加任何条件,1万条数据读取加上传输,这个过程是很耗时的;而如果就算是本地查询,可数据库存储的数据本身也是固化到硬盘的,你读取出来,也是有io操作的,而io操作是一个非常明显的瓶颈。
    因此,可以总结为:查询的时候加上where条件确实是从所有中过滤,但是加上where条件之后,查询出来的数据就少了,查询出来的数据少,那么服务器消耗的io资源就少了,同样数据的传输量也少了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 win10电脑安装完plcsim advanced4.0运行时为什么会提示找不到虚拟网卡
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link