这样写好一些,因为如果以后要添加了字段的话(一般是不得已)
那么你用select * 取出的就不是你想要的数据
这样使用的时候也会出现一些问题
安全起见,最好不要写select *

解决方案 »

  1.   

    我们就是
    SELECT 
      col1,
      col2,
      col3,
      ...
    FROM
      table1
    ...^…^
      

  2.   

    用select a,b,c,....好一些,不過一般感覺不出來
    因為用select * from 表,Sql就要到系統表中查找這個表的所有字段,
    而用select a,b,c,....指定後Sql就不需要到系統表中查找
      

  3.   

    select * from table 是一个偷懒的方法,
    好处是如果table新增的字段,正好是你想要的,就不用修改的,
    坏处是如果table新增的字段,正好不是你想要的,而且字段内容很大,那就有效率问题。
    而且如果后面有group by语句的话,还是不要偷懒吧,加了字段就可能出错了。
      

  4.   

    真正的效率问题是:使用组装SQL语句,
    解决办法是使用参数化查询和使用存储过程,但是有些人认为麻烦,认为不会有很大的问题,尤其是简单的语句,但是试验表明差别是很大的,运行一次可能差别不大,但是一百次,差别就很明显了,不信自己作个试验试试看。
      

  5.   

    select x,y,z...from a可以按照自己的意愿排序,而select * from a 排序不是很随意
    例如:select name,age from a ;select age,name from a;这只是我的看法,不清楚同效率又没有关系。
    学习中。。
      

  6.   

    select x,y,z.....可以为每个字段设别名
      

  7.   

    效率是一个问题;另一个用一个个字段写出来,容易维护程序,知道选取哪些有用字段。
    select * 根本不知道你需要哪几个字段;看看微软,Oracle 的SQL源码等,我们会学到不少的东东。
      

  8.   

    有效率的问题?我昏,根本和效率没有关系。
    你楼上的也把SQL SERVER看的太笨了吧。
    SQL SERVER有智能,即使是不同的查询语句,SQL SERVER也会对比彼此的执行规划,看哪个更经济。
    你只要看看执行规划就知道了,SELEC * FROM TABLE 和SELECT COL1,COL2....的查询规划是一个样的,即使是打开了set forceplan off其执行规划也是一样的,也就是说这样个语句对SQL SERVER来说是一样的。只是对看代码的人不一样而已。
      

  9.   

    有效率的差别。SQL> set timing on;
    SQL> select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7369 SMITH      CLERK           7902 17-12月-80        800
            20      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300
            30      7521 WARD       SALESMAN        7698 22-2月 -81       1250        500
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7566 JONES      MANAGER         7839 02-4月 -81       2975
            20      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400
            30      7698 BLAKE      MANAGER         7839 01-5月 -81       2850
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7782 CLARK      MANAGER         7839 09-6月 -81       2450
            10      7788 SCOTT      ANALYST         7566 19-4月 -87       3000
            20      7839 KING       PRESIDENT            17-11月-81       5000
            10
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0
            30      7876 ADAMS      CLERK           7788 23-5月 -87       1100
            20      7900 JAMES      CLERK           7698 03-12月-81        950
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7902 FORD       ANALYST         7566 03-12月-81       3000
            20      7934 MILLER     CLERK           7782 23-1月 -82       1300
            10
    已选择14行。已用时间:  00: 00: 00.05
    SQL> select * from  emp;     EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7369 SMITH      CLERK           7902 17-12月-80        800
            20      7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300
            30      7521 WARD       SALESMAN        7698 22-2月 -81       1250        500
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7566 JONES      MANAGER         7839 02-4月 -81       2975
            20      7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400
            30      7698 BLAKE      MANAGER         7839 01-5月 -81       2850
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7782 CLARK      MANAGER         7839 09-6月 -81       2450
            10      7788 SCOTT      ANALYST         7566 19-4月 -87       3000
            20      7839 KING       PRESIDENT            17-11月-81       5000
            10
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0
            30      7876 ADAMS      CLERK           7788 23-5月 -87       1100
            20      7900 JAMES      CLERK           7698 03-12月-81        950
            30
         EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM
    ---------- ---------- --------- ---------- ---------- ---------- ----------
        DEPTNO
    ----------
          7902 FORD       ANALYST         7566 03-12月-81       3000
            20      7934 MILLER     CLERK           7782 23-1月 -82       1300
            10
    已选择14行。已用时间:  00: 00: 00.08
      

  10.   

    楼上两个是数据库版高手嘿嘿学习ing
      

  11.   

    如果这个select * from table1 是写在一个视图中的, 当别人在这个表中增加一个字段的时候,  就有可能出现字段不对齐的情况了。  比如你原来是cus_name字段, 有可能取出的是cus_address的, 除非你重新去生成这个视图, 而select col1, col2 ... 就不会   所以我认为还是用select col1, col2 ... 比较好
      

  12.   

    有时会差很远﹐我有一个table有30万条记录﹐用Select * 要好几秒﹐如果只Select少数字段则很快﹐所以没用的字段不要Select了来﹐浪费时间﹐而且后续新增字段时也造成多选﹐所以就算Select全部也不要写成Select *﹐要把全部字段都写出来