On Wed, Oct 7, 2009 at 10:02 AM, Andrew P. [email protected]
wrote:
I too choose PostgreSQL by default.
Here are some of my reasons.
- It adheres more reliably to SQL standard than MySQL.
No it doesn’t, they are both standards compliant.
- PostgreSQL has a better query planner than MySQL.
MySQL’s explain works great for me.
http://dev.mysql.com/doc/refman/5.0/en/using-explain.html
Looks nearly identical to the PostgreSQL offering:
http://www.postgresql.org/docs/8.4/static/using-explain.html
- The number value zero in MySQL is treated NULL.
That’s a lie.
mysql> select * from test;
±—±-------+
| id | number |
±—±-------+
| 1 | 0 |
±—±-------+
1 row in set (0.00 sec)
mysql> select * from test where number is null;
Empty set (0.00 sec)
- The default settings for MySQL make it case IN-sensitive.
So what? You can easily make an individual table case sensitive by
creating it with proper binary collation.
mysql> create table test3 (name varchar(255)) character set latin1
collate latin1_bin;
Query OK, 0 rows affected (0.04 sec)
mysql> insert into test3 values
(‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM test3 WHERE name LIKE ‘F%’;
±-------+
| name |
±-------+
| Frank |
| FlicKr |
±-------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM test3 WHERE name LIKE ‘f%’;
±--------+
| name |
±--------+
| froogle |
| flickr |
±--------+
2 rows in set (0.00 sec)
- Until version 5.0, MySQL did not support referential integrity, or
advanced features like views, transactions, or triggers.
This argument is useless. There’s a ton of things PostgreSQL used to
not do when it was < 5.0. Replication, binary field storage, etc.
–
Greg D.
http://destiney.com/