1. 使用核心线程的完全多线程。这意味着它能很容易地利用多cpu(如果有)。
2. 支持c 、c++、 eiffel 、 java、 perl、 php、python、和 tcl api等客户工具和 api。
3. 可运行在不同操作系统平台上。
4. 支持多种列类型:1、 2、 3、4、和 8 字节长度的有符号/无符号整数、float、double、char、varchar、text、blob、date、time、datetime、 timestamp、year、set和enum类型。
5. 利用一个优化的一遍扫描多重联结(one-sweep multi-join)非常快速地进行联结(join)。
6. 在查询的select和where部分支持全部运算符和函数,例如:
mysql> select concat(first_name, , last_name) from tbl_name
where income/dependents > 10000 and age > 30;
7. 通过一个高度优化的类库实现sql函数库并且像他们能达到的一样快速,通常在查询初始化后不应该有任何内存分配。
8. 全面支持sql的group by和order by子句,支持聚合函数( count()、count(distinct)、avg()、std()、sum()、 max()和min() )。
9. 支持ansi sql的left outer join和odbc语法,你可以在同一查询中混用来自不同数据库的表。
10. 一个非常灵活且安全的权限和口令系统,并且它允许基于主机的认证。口令是安全的,因为当与一个服务器连接时,所有的口令传送被加密。
11. odbc for windiws 95。所有的 odbc 2 . 5 函数和其他许多函数。例如,你可以用access连接你的 mysql服务器,具备索引压缩的快速b树磁盘表。
12. 每个表允许有16个索引。每个索引可以由1~16个列或列的一部分组成。最大索引长度是 256 个字节(在编译mysql时,它可以改变)。一个索引可以使用一个char或varchar字段的前缀。
13. 定长和变长记录。用作临时表的内存散列表。
14. 大数据库处理。我们正在对某些包含 50,000,000 个记录的数据库使用mysql。
15. 所有列都有缺省值,你可以用insert插入一个表列的子集,那些没用明确给定值的列设置为他们的缺省值。为了可移植性使用 gnu automake , autoconf 和libtool。
16. 用c和c++编写,并用大量不同的编译器测试,一个非常快速的基于线程的内存分配系统。
17. 全面支持iso-8859-1 latin1 字符集。例如,斯堪的纳维亚的字符 @ringaccent{a}, @a and @o 在表和列名字被允许。
18. 表和列的别名符合 sql92 标准。
19. 函数名不会与表或列名冲突。例如abs是一个有效的列名字。
20. 客户端使用tcp/ip 连接或unix套接字(socket)或nt下的命名管道连接mysql。
21. mysql特有的show命令可用来检索数据库、表和索引的信息,explain命令可用来确定优化器如何解决一个查询。
