[development] Is "SELECT * FROM ..." ok?

Gordon Heydon gordon at heydon.com.au
Fri Feb 13 05:21:59 UTC 2009


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi,

No actually in e-Commerce I have set standards where we do this where  
ever we can. this means that with very little code an external module  
can extend a table.

Give that we use drupal_write_record() to write all records someone  
can use the hook_schema_alter() and the hook_form_alter() to add  
columns to a table.

Take the ec_product table, we do a SELECT * from {ec_product} WHERE  
vid = %d. Then using the hook_form_alter() to add additional fields to  
the form to capture data. Other than validating that the field is  
correct when e-Commerce calls drupal_write_record() then entire node  
is past, which means no additional processing needs to be done, and  
the new custom fields will get saved as required.

But you can have problems like what you describe is there number of  
columns is a large number. So if you are joining 20 odd tables with a  
SELECT * to return all fields can cause problems.

It is really up to the developer to make sure they implement it  
correctly.
Gordon.

On 13/02/2009, at 4:08 PM, augustin (beginner) wrote:

> Hello,
>
>
> A while ago, someone (not me!) brought down our collocation server  
> with a home
> made script which had many queries like this:
>
> SELECT * FROM ...
>
> I.e. the script was indiscriminately selecting everything from the  
> table even
> though he might have needed only a few fields.
> This created heavy traffic between the SQL server and the web server  
> which
> overwhelmed the platform. To be honest, I don't know the details (he  
> might
> have been needlessly transferring whole images stored in the DB or  
> something
> like this!)
>
>
> In Drupal 6.9, I count 120 occurrences of SELECT * FROM ... , not  
> including
> SELECT COUNT(*) but including variations of SELECT n.*, pi.*  
> FROM ... .
>
> Wouldn't it be a good idea to explicitly tell which fields are  
> needed, in
> order to minimize traffic between SQL server and web server?
>
> The SQL coding standards say nothing about this:
> http://drupal.org/node/2497
>
> Should SELECT * FROM be considered a kind of bug?
> Should this whole discussion be a 'won't fix' ? (why?)
> Or is this something worth considering in the issue queue?
>
>
>
> Blessings,
>
>
> Augustin.
>
>
>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)

iEYEARECAAYFAkmVA3cACgkQngavurZvkryJJwCgip4b17BquRwlmoLUeMX3ZrKK
yGkAmQGe4YusD6sU9umm0E1AEJvdgu5M
=RKUH
-----END PGP SIGNATURE-----


More information about the development mailing list