mSQLThis 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.
mSQL can 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 mSQL should be quicker at:
CREATE TABLE and DROP TABLE.
SELECT one something that isn't an index. (A table scan is very
easy)
mSQL and
most other SQL implementions on the following:
mSQL all 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.
ORDER BY and GROUP BY.
DISTINCT.
TEXT or BLOB columns.
GROUP BY & HAVING
MySQL supports a full GROUP BY with both HAVING
and the following functions count(), avg(), min(),
max(), sum() and std(). min() and
max() may take string arguments. count(*) is optimised to
return very quickly if this is the only thing in the query. mSQL
does not support GROUP BY at all.
INSERT & UPDATE with calculations.
MySQL can do calculations in a INSERT or UPDATE.
UPDATE SET x=x*10+y WHERE x<20;
SELECT with functions
MySQL has too many functions to list here. See section Functions for use in SELECT and WHERE clauses.
mSQL2 only has 4 types (char,text,int,real) it is hard to
get small tables.
mSQL stability so we can not say
anything about that.
mSQL and 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.
mSQL with some
added features.
mSQL has 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 mSQL
HISTORY 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.
mSQL and MySQL has a lot of interesting third-party
tools. Since it is very easy to port upwars (mSQL ->
MySQL) MySQL has almost all interesting mSQL
applications.
MySQL comes with a simple msql2mysql program that fixes the different
spelling of the most used functions. A conversion of a client program
from mSQL to mySQL usually takes a couple of minutes.
mSQL tools 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.
The procedure:
Differences between the MySQL and mSQL C API's.
mSQL uses an
int).
mSQL only returns a text error
mSQL are 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 mSQL are:
mSQL 2.0?CREATE TABLE
MySQL
UNSIGNED option for all integer columns.
ZEROFILL option for all integer columns.
AUTO_INCREMENT option for all integer columns that also is a
PRIMARY KEY. See section How can I get the unique ID for the last inserted row?.
DEFAULT value for all columns.
ENUM type for one of a set of strings.
SET type for many of a set of string.
BIGINT type for 64 bit integers.
mSQL2
mSQL type | Corresponding MySQL type. |
| char(len) | char(len) |
| text(len) | text(len). len is the maximal length. And LIKE works.
|
| int | int. With many more options! |
| real | real. Or float. Both 4 and 8 bytes versions are available. |
| uint | Unsigned integer. |
| date | date. Takes ANSI SQL format instead of mSQLs own.
|
| time | time |
| money | decimal(12,2). A fixed point value with two decimals. |
MySQL
CREATE TABLE. Indexes can not be
removed without recreating the table. See section ALTER TABLE syntax.
mSQL
CREATE INDEX
clause. Indexes may be removed with DROP INDEX.
MySQL
AUTO_INCREMENT as a column type
specifier. See section How can I get the unique ID for the last inserted row?.
mSQL
SEQUENCE on a table and select the _seq column.
MySQL
PRIMARY KEY to the table.
mSQL
_rowid column. Observe that _rowid may change
depending on many factors.
MySQL
TIMESTAMP column 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.
mSQL
_timestamp column.
=NULL to IS NULL
when porting old code from mSQL to MySQL.
BINARY attribute.
MySQL
LIKE is always case insensitive. Also if possible MySQL
uses indexes if the like argument doesn't start with a wildcard.
mSQL
CLIKE.
MySQL
CHAR and VARCHAR
columns. Currently use a TEXT column if this behavior is
undesired.
mSQL
WHERE statement?
MySQL
mSQL behaviour 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)))).
mSQL
MySQL
mSQL
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.