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

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

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

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

我又想了一下,最终可以总结为:where条件的过滤耗时和io以及传输的资源耗费的对比;两者对比,where条件的过滤资源耗费低于io以及传输的资源耗费;具体比率是多少,呵呵,没有测试过。

客户端一般也只传输显示的那几条,不会全传过来

还可能一个原因是看你的where 条件中有没有用到索引,比如id(主键),一般数据库都做了索引,那么where id>10就不会全表扫描,就快多了