Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Functions in MySQL or PHP

Is it generally better to run functions on the webserver, or in the database?

Example:

INSERT INTO example (hash) VALUE (MD5('hello'))

or

INSERT INTO example (hash) VALUE ('5d41402abc4b2a76b9719d911017c592')

Ok so that's a really trivial example, but for scalability when a site grows to multiple websites or database servers, where is it best to "do the work"?

like image 952
anon Avatar asked Nov 01 '08 20:11

anon


People also ask

Which is better MySQL or PHP?

PHP is a fast and feature-rich open source scripting language used to develop Web Applications or Internet / Intranet Applications. MySQL is a powerful open source database server built based on a relational database management system (RDBMS) and is capable of handling a large concurrent database connection.

What is the difference between PHP and MySQL?

PHP is the most popular scripting language for web development. It is free, open source and server-side (the code is executed on the server). MySQL is a Relational Database Management System (RDBMS) that uses Structured Query Language (SQL). It is also free and open source.

Can you make functions in MySQL?

MySQL functions can be created by using the CREATE FUNCTION statement. We can call the functions inside the query or simply select the function value.


2 Answers

I try to think of the database as the place to persist stuff only, and put all abstraction code elsewhere. Database expressions are complex enough already without adding functions to them.

Also, the query optimizer will trip over any expressions with functions if you should ever end up wanting to do something like "SELECT .... WHERE MD5(xxx) = ... "

And database functions aren't very portable in general.

like image 122
dkretz Avatar answered Oct 13 '22 16:10

dkretz


I try to use functions in my scripting language whenever calculations like that are required. I keep my SQL function useage down to a minimum, for a number of reasons.

The primary reason is that my one SQL database is responsible for hosting multiple websites. If the SQL server were to get bogged down with requests from one site, it would adversely affect the rest. This is even more important to consider if you are working on a shared server for example, although in this case you have little control over what the other users are doing.

The secondary reason is that I like my SQL code to be as portable as possible. I don't even want to try to count the different flavors of SQL that exist, so I try to keep functions (especially non-standard extensions) out of my SQL code, except for things like SUM or MIN/MAX.

I guess what I'm saying is, SQL is designed to store and retrieve data, and it should be kept to that purpose. Use your serving language of choice to perform any calculations beforehand, and keep your SQL code portable.

like image 43
Nicholas Flynt Avatar answered Oct 13 '22 16:10

Nicholas Flynt