性能 对于速度的真实比较,请教不断成熟的mysql基准套件。见10.8 使用你自己的基准。因为没有线程创建开销、一个较小的语法分析器、较少功能和简单的安全性,mSQL应该在下列方面更快些: 执行重复的连接和断开的测试,在每个连接期间运行一个非常简单的查询。 有很少的列和键的插入很简单的表的INSERT操作。 CREATE TABLE和DROP TABLE。 在不是一个索引的一些东西上SELECT。(一个表扫描是很容易的。) 因为这些操作是如此简单,当你有更高的启动开销时,很难在这些方面变得更好。在连接被建立以后,MySQL应该性能好一些。在另一方面,MySQL比mSQL(以及大多数其他的SQL实现)在下列方面更好些:
复杂的SELECT操作 检索较大的结果(MySQL有一个更好、更快并且更安全的协议)。 有变长字符串的表,因为MySQL有更有效的并可在VARCHAR列上索引。 有很多列的表的处理。 由长记录的表的处理。 有很多许多表达式的SELECT。 在大表上的SELECT。 同时处理很多连接。MySQL充分是完全多线程化的,每个连接有它自己的线程,这意味着没有线程必须等待另一个线程(除非一个线程正在修改一张表,另外的线程想要存取)在mSQL中,一旦一个连接被建立了,所有其它线程必须等到第一个线程完成,不管连接正在运行的查询是短的或是长的。当第一个连接终止时,下一个才能工作,而此时所有其它线程再次等待,等等。 联结。如果你改变一个SELECT中的表的顺序,mSQL可能变得异常地慢。在基准套件中,比MySQL要慢超过15000倍的时间。这是由于mSQL缺乏一个联结优化器以便以最佳的顺序排定表。然而,如果你把表按完全正确的顺序放在mSQL2中并且WHERE是很简单的并使用索引列,联结将相对快些!见10.8 使用你自己的基准。 ORDER BY和GROUP BY。 DISTINCT。 使用TEXT或BLOB列。
SQL功能 GROUP BY和HAVING。mSQL根本不支持GROUP BY。MySQL支持一个有两个HAVING和下列函数: COUNT()、AVG()、MIN()、MAX()、SUM()和STD()的完整的GROUP BY。如果SELECT从一张表中检索,没有其他列被检索并且没有WHERE子句,COUNT(*)被优化以很快地返回。 MIN()和MAX()可以取字符串参数。 带计算的INSERT和UPDATE。MySQL能在一个INSERT或UPDATE中做计算。例如: mysql> UPDATE SET x=x*10+y WHERE x
(出处:http://www.sheup.com)
上一页 [1] [2]