
DBMS Comparison - neverminder
http://www.sql-workbench.net/dbms_comparison.html
======
frik
The idea is good, but without database software versions and links to sources,
a bit useless. MySQL supports several database engines, the former default
engine was ISAM (now outdated), the newer default engine is InnoDB.

Such a comparison table would fit to Wikipedia.

~~~
SloopJon
It makes complete sense to me that the maintainer of a multi-DB tool would
collect a table of features like this. My impression is that SQL Workbench/J
does not try to hide differences between database systems. The fact that a
cell in the table is red is a heads up that the straightforward way won't
necessarily work out of the box.

There are notes for some of the cells like "since 3.8.3" and "MariaDB 10.1
supports ...". If you have more specific information, I'm sure the author
would be happy to get an email.

~~~
frik
The notes aren't accessible on touch devices like iPad.

------
Sapient
Wow, Im pretty shocked at how many more features Postgres has over MySQL. I
always just though of Postgres as 'a bit better, but not really worth the
effort', I will definitely have to try it again.

------
xtrumanx
I knew my constant browsing of HN would pay off one day. I didn't even know
filtered aggregates were a thing and solved a problem I was having just by
discovering it.

Thanks for the submission neverminder.

~~~
jbigelow76
Can you explain the difference between a filtered aggregate and an aggregate
on a result set that has been limited by a WHERE clause? It's difficult to
tell the difference from the annotation on the comparison table.

~~~
xtrumanx
Well here's how I used it. My query was joining two tables with a left join
and I was using the array_agg aggregate function (which aggregates a series of
rows into a single array) on a record on the right table. Since the right
table could be have rows that were all null I was getting aggregation of null
values sometimes which I didn't want.

I didn't want to skips rows with null values (which is why I used a left join)
since I needed the values of the left table always and thus had a conundrum.

With the filtered aggregation, I could tell PostgreSQL to not aggregate the
null values. Here's the results of my query before and after using the
filtered aggregate.

Before: {"name":"asd","id":2,"pages":[{"id":null,"data":null,"siteid":null}]}

After: {"name":"asd","id":2,"pages":null}

------
sarciszewski
PostgreSQL also has materialized views that can be refreshed concurrently.
Neither were present on this chart.

------
buckbova
For SQL Server, you can use dynamic sql in triggers.

