Don't Use Select *
来源:互联网 发布:嵌入式c语言特点 编辑:程序博客网 时间:2024/05/15 06:30
(Digest from www.asp101.com)
Something you see in a lot of database access code is a select statement that looks something like this:
SELECT * FROM TableName WHERE ...
While there's technically nothing wrong with it, using the SELECT * syntax could be stealing away precious performance from your application, and even it it's not now, it might someday soon.
When you do a SELECT * against a database table it tells the database to return all the fields from the selected rows in the given table. The problem with doing that is that you rarely actually need all the fields for any one page and moving around all that extra data can really slow things down. This is especially true if your database and web server run on separate computers since the extra data then needs to be transferred over the network.
The response that I usually get when I tell people this is that the table is small and it doesn't really matter. I wholeheartedly disagree. Even if you're retrieving data from a table that only contains a few fields, how do you know that table will only contain those fields in the future? Very few databases and web development projects are static. Things change and your application needs to be able to roll with the punches. Here's an example to illustrate my point.
Let's say that you've got an employee table in your database that lists your current employees. You'll obviously want a page on your intranet (and maybe even your public site) that lists these employees. Assume the employee table contains just a few fields: id, first name, last name, department, and phone number. If you were to build a simple phone list that lists employees by department and provides their phone numbers you might use a database query something like this:
SELECT * FROM Employee
as opposed to typing out what you really mean:
SELECT id, first_name, last_name, department, phone_number FROM Employee
Right now there's really no difference between the two, but if six months down the road you decide to add a picture of each employee to the database, are you going to remember to go back and change the SQL query? If not, now with every call to that page the web server requests every field and is transferred a picture of each employee that it doesn't even use. Since pictures tend to be large, you'd be transferring a lot of data for no reason!
It may take a few extra seconds to type out the field names, but it's a good habit to get into and the performance savings can make it well worth the time.
- Don't Use Select *
- Don't use XP!
- Don't use extjs
- Don't use MongoDB
- Don't Use XP (转)
- Don't Use System.out.println
- [Struts] Don't use Datasource of Struts.
- When don't use spring in Camel
- Don't use Actors for concurrency
- Don't Use System.out.println! Use Log4j ----english
- Don't Use System.out.println! Use Log4j
- Don't use parentheses after a no-argument manipulator;
- Don't use @PersistenceContext in a web app...
- Get - When you don't know phrasal verbs, use "GET"
- dealloc Don't Use Accessor Methods in Init and Dealloc
- Don't use 'using()' with a WCF proxy
- LESSON: Don't Use Table in Jasper SubReport
- Don't use dynamic versions for your dependencies
- 业务与技术
- Creating a Winlogon Notification Package
- 程序设计中的感悟
- 试用期间员工权利全搜索
- 经典语句[转载]
- Don't Use Select *
- new for try
- MySQL权威指南读书笔记,第一章,MySQL和SQL入门(一,对数据库的理解)
- 富人和穷人的八大差异
- MySQL权威指南读书笔记,第二章:MYSQL数据库里面的数据
- MySQL权威指南读书笔记,第三章,MySQL的语法及其使用
- COM技术内幕学习笔记
- 电脑程序员的蘑菇定律
- 什么是3G通信