Foxtable(狐表)用户栏目专家坐堂 → select * fro m与select 0 fro m的区别


  共有2810人关注过本帖树形打印复制链接

主题:select * fro m与select 0 fro m的区别

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
select * fro m与select 0 fro m的区别  发帖心情 Post By:2016/8/30 16:31:00 [只看该作者]

select * fr om与select 0 fr om的区别
那一个写法运行的效率更高呢?

 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/30 16:58:00 [只看该作者]

这2个玩意不是一回事吧。

select * fr om是返回所有字段

select 0 fr om是返回一列,值全部是0,列名称由数据库自动生成

 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(Hyphen)这2个玩意不是一回事吧。select * fr...  发帖心情 Post By:2016/8/30 17:04:00 [只看该作者]

你好  再麻烦你一下
如果我有一个表 有近二十个字段列 
我想根据姓名=张三  来查询这个表中的姓名等于张三的所有的字段值 
怎样操作才能确保查询的效率最佳呢?


 回到顶部
帅哥哟,离线,有人找我吗?
Hyphen
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/8/30 17:27:00 [只看该作者]

DBA一般会告诉你,给姓名加上索引,sel ect后面加上需要的字段名称。

好几年前曾经有DBA分析过,列出字段比用*号的效率要高,少了一步解析的过程。只是不知道现在最新的数据库这方面的机制有没有改变。

另外一个可以观察到的现象就是在sqlserver创建视图的时候,视图会自动把*号更换为所有的字段名称。

 回到顶部
帅哥哟,离线,有人找我吗?
jspta
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2016/8/30 17:37:00 [只看该作者]

以下是引用李孝春在2016/8/30 17:04:00的发言:
你好  再麻烦你一下
如果我有一个表 有近二十个字段列 
我想根据姓名=张三  来查询这个表中的姓名等于张三的所有的字段值 
怎样操作才能确保查询的效率最佳呢?

你这个需要历遍所有列?  你表设计有问题。
如果你非要这样,只能历遍你需要的列,写wh ere条件进行加载


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(jspta)以下是引用李孝春在2016/8/30 17:04:0...  发帖心情 Post By:2016/8/31 9:45:00 [只看该作者]

select 0 f rom a where name='张三'

表字段有NAME 性别 年龄  出生年月 身份证号码 居住地址 学历 学会  入党时间等字段

上面的写法可以查出name等于张三的所有字段列值么?

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110599 积分:562897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/8/31 10:08:00 [只看该作者]

select NAME,性别 ,年龄 , 出生年月, 身份证号码 ,居住地址, 学历, 学会,  入党时间 f rom a where name='张三'

select * f rom a where name='张三'

 回到顶部
帅哥哟,离线,有人找我吗?
gtashiwo
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:30 积分:338 威望:0 精华:0 注册:2016/3/7 15:58:00
  发帖心情 Post By:2016/8/31 16:42:00 [只看该作者]

几年前看过一个文章,数据量大的时候SELECT 1 比SELECT *来的快,数据量小的时候SELECT *比SELECT 1来的快 


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110599 积分:562897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/8/31 17:42:00 [只看该作者]

如果sql不变的话,数据库执行一次后会缓存这条sql的解析,所以一般同一条sql(oracle是大小写不一样当作是不同的sql)第二次执行就会比第一次快。

由于狐表不支持sql执行的参数模式,所以享受不到这点优势。我们习惯就是拼接sql,如果条件不一样,就已经是不同的sql了。

 回到顶部