以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- select * fro m与select 0 fro m的区别 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=89818) |
-- 作者:李孝春 -- 发布时间:2016/8/30 16:31:00 -- select * fro m与select 0 fro m的区别 select * fr om与select 0 fr om的区别 那一个写法运行的效率更高呢?
|
-- 作者:Hyphen -- 发布时间:2016/8/30 16:58:00 -- 这2个玩意不是一回事吧。 select * fr om是返回所有字段 select 0 fr om是返回一列,值全部是0,列名称由数据库自动生成
|
-- 作者:李孝春 -- 发布时间:2016/8/30 17:04:00 -- 回复:(Hyphen)这2个玩意不是一回事吧。select * fr... 你好 再麻烦你一下 如果我有一个表 有近二十个字段列 我想根据姓名=张三 来查询这个表中的姓名等于张三的所有的字段值 怎样操作才能确保查询的效率最佳呢? |
-- 作者:Hyphen -- 发布时间:2016/8/30 17:27:00 -- DBA一般会告诉你,给姓名加上索引,sel ect后面加上需要的字段名称。 好几年前曾经有DBA分析过,列出字段比用*号的效率要高,少了一步解析的过程。只是不知道现在最新的数据库这方面的机制有没有改变。
另外一个可以观察到的现象就是在sqlserver创建视图的时候,视图会自动把*号更换为所有的字段名称。 |
-- 作者:jspta -- 发布时间:2016/8/30 17:37:00 -- 以下是引用李孝春在2016/8/30 17:04:00的发言:
你好 再麻烦你一下 如果我有一个表 有近二十个字段列 我想根据姓名=张三 来查询这个表中的姓名等于张三的所有的字段值 怎样操作才能确保查询的效率最佳呢? 你这个需要历遍所有列? 你表设计有问题。 如果你非要这样,只能历遍你需要的列,写wh ere条件进行加载 |
-- 作者:李孝春 -- 发布时间:2016/8/31 9:45:00 -- 回复:(jspta)以下是引用李孝春在2016/8/30 17:04:0... select 0 f rom a where name=\'张三\' 表字段有NAME 性别 年龄 出生年月 身份证号码 居住地址 学历 学会 入党时间等字段 上面的写法可以查出name等于张三的所有字段列值么?
|
-- 作者:有点蓝 -- 发布时间:2016/8/31 10:08:00 -- select NAME,性别 ,年龄 , 出生年月, 身份证号码 ,居住地址, 学历, 学会, 入党时间 f rom a where name=\'张三\' 或 select * f rom a where name=\'张三\'
|
-- 作者:gtashiwo -- 发布时间:2016/8/31 16:42:00 -- 几年前看过一个文章,数据量大的时候SELECT 1 比SELECT *来的快,数据量小的时候SELECT *比SELECT 1来的快 |
-- 作者:有点蓝 -- 发布时间:2016/8/31 17:42:00 -- 如果sql不变的话,数据库执行一次后会缓存这条sql的解析,所以一般同一条sql(oracle是大小写不一样当作是不同的sql)第二次执行就会比第一次快。 由于狐表不支持sql执行的参数模式,所以享受不到这点优势。我们习惯就是拼接sql,如果条件不一样,就已经是不同的sql了。
|