If you use select * in a join then you are automatically sending more information than you need becasue the join field(s) are repeated. This is a waste of processing time and network resources and can cause performance problems. Further not specifying the fields means that your application can break when new fields are added especially if they are fields that the user is not intended to see but which are there for auditing or database type processing. Select * in an insert is always a bad idea as somewhere along the line some somen who is less than smart may actually change the order of the columns in the table .