This section has been written by the MySQL developers so it should be read with that in mind. But there are NO factual errors that we know of.
For a list of all supported limits, functions and types see the
crash-me web page.
mSQLcan get patalogically slow if you chage the order of tables in a select. In the benchmark suite a time more that 15000 times slower than MySQL was seen. Because of no thread creation overhead, small parser, few features and simple security
mSQLshould be quicker at:
SELECTone something that isn't an index. (A table scan is very easy)
mSQLand most other SQL implementions on the following:
mSQLall other connections have to wait until the first, doesn't matter whether the query is long or short, is executed and finished. After that the next connection can be served, while all the others wait again, etc.
HAVINGMySQL supports a full
GROUP BYwith both
HAVINGand the following functions
max()may take string arguments.
count(*)is optimised to return very quickly if this is the only thing in the query.
mSQLdoes not support
GROUP BYat all.
UPDATEwith calculations. MySQL can do calculations in a
UPDATE SET x=x*10+y WHERE x<20;
SELECTwith functions MySQL has too many functions to list here. See section Functions for use in
mSQL2only has 4 types (char,text,int,real) it is hard to get small tables.
mSQLstability so we can not say anything about that.
mSQLand is also cheaper than
mSQL. Remember to at least consider paying for a license or email support for whatever product you choose to use. If you sell a product with MySQL you are of course required to get a license for this.
mSQLwith some added features.
mSQLhas one but we have too little experience with it to compare.
mSQL, it has a lot of catching up to do. To get some perspective on this you can view the
mSQLHISTORY file for the last year and compare it with the News section. See section MySQL change history. It should be pretty obvious which one has developed most rapidly.
mSQLand MySQL has a lot of interesting third-party tools. Since it is very easy to port upwars (
mSQL-> MySQL) MySQL has almost all interesting
mSQLapplications. MySQL comes with a simple msql2mysql program that fixes the different spelling of the most used functions. A conversion of a client program from
mSQLto mySQL usually takes a couple of minutes.
mSQLtools like msql-tcl, msqljava?
According to our experience it would just take a few hours to convert a
tool using the
mSQL C API to the MySQL C API.
Differences between the MySQL and
mSQL C API's.
mSQLonly returns a text error
mSQLare the MySQL client/server communications protocols?
There are enough differences that it is impossible (at least not easy) to support both.
The greatest differences between MySQL and
UNSIGNEDoption for all integer columns.
ZEROFILLoption for all integer columns.
AUTO_INCREMENToption for all integer columns that also is a
PRIMARY KEY. See section How can I get the unique ID for the last inserted row?.
DEFAULTvalue for all columns.
ENUMtype for one of a set of strings.
SETtype for many of a set of string.
BIGINTtype for 64 bit integers.
|Corresponding MySQL type.|
|text(len)|| text(len). len is the maximal length. And |
|int||int. With many more options!|
|real||real. Or float. Both 4 and 8 bytes versions are available.|
|date|| date. Takes ANSI SQL format instead of |
|money||decimal(12,2). A fixed point value with two decimals.|
CREATE TABLE. Indexes can not be removed without recreating the table. See section ALTER TABLE syntax.
CREATE INDEXclause. Indexes may be removed with
AUTO_INCREMENTas a column type specifier. See section How can I get the unique ID for the last inserted row?.
SEQUENCEon a table and select the
PRIMARY KEYto the table.
_rowidcolumn. Observe that
_rowidmay change depending on many factors.
TIMESTAMPcolumn to the table. This column will automaticly be updated to the current time if you don't give the column a value or if you give it a NULL value.
IS NULLwhen porting old code from mSQL to MySQL.
LIKEis always case insensitive. Also if possible MySQL uses indexes if the like argument doesn't start with a wildcard.
VARCHARcolumns. Currently use a
TEXTcolumn if this behavior is undesired.
mSQLbehaviour in MySQL, use parenthesis:
select * from table where a=1 and b=2 or a=3 and b=4->
select * from table where (a=1 and (b=2 or (a=3 and (b=4)))).
For a list of all supported limits, functions and types see the crash-me web page.
PostgreSQL has some more advanced features like user-defined types, triggers, rules and transactions. But it lacks a lot of the standard types and functions from ANSI SQL and ODBC. See the crash-me web page for a complete list of supported/unsupported types/function.
Normally PostgreSQL is much slower than MySQL. See section MySQL benchmark suite.
Go to the first, previous, next, last section, table of contents.