性能 對於速度的真實比較,請教不斷成熟的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