mSQL
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.
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 mSQL s 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.