美文网首页MySQL最佳实践
select为什么不能用*

select为什么不能用*

作者: 翁正存 | 来源:发表于2018-09-04 19:34 被阅读231次

    CREATE TABLE `employees` (

      `employeeNumber` int(11) NOT NULL,

      `lastName` varchar(50) NOT NULL,

      `firstName` varchar(50) NOT NULL,

      `extension` varchar(10) NOT NULL,

      `email` varchar(100) NOT NULL,

      `officeCode` varchar(10) NOT NULL,

      `reportsTo` int(11) DEFAULT NULL,

      `jobTitle` varchar(50) NOT NULL,

      PRIMARY KEY (`employeeNumber`),

      KEY `reportsTo` (`reportsTo`),

      KEY `officeCode` (`officeCode`),

      CONSTRAINT `employees_ibfk_1` FOREIGN KEY (`reportsTo`) REFERENCES `employees` (`employeeNumber`),

      CONSTRAINT `employees_ibfk_2` FOREIGN KEY (`officeCode`) REFERENCES `offices` (`officeCode`)

    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

    现在,我们有一个employees表,需要从employees表查全部字段信息,在生产环境,一定不要使用  SELECT * FROM employees;

    而要罗列出所有要查询的字段,原因如下:

    1.使用*会返回所有的字段,而有些字段你可能不会使用,这样就造成磁盘I/O和网络带宽的浪费。

    2.明确罗列返回的字段,使查询结果可控、可维护,如果别的兄弟改了表结构,比如,加了几个字段,*返回的结果可能就不是你想要的结果了。

    3.使用*会返回所有字段的信息,万一有些字段包含敏感信息,就可能造成敏感信息泄露给未授权的用户。

    相关文章

      网友评论

        本文标题:select为什么不能用*

        本文链接:https://www.haomeiwen.com/subject/uienwftx.html