mysql的特點

1. 它使用的核心線程是完全多線程,支持多處理器。 

2. 有多種列類型:1、2、3、4、和8字節長度自有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。 

3. 它通過一個高度優化的類庫實現SQL函數庫並像他們能達到的一樣快速,通常在查詢初始化後不該有任何內存分配。沒有內存漏洞。 

4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查詢中混來自不同數據庫的表。 

5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。 

6. 所有列都有缺省值。你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置爲他們的決省值。 

7. MySQL可以工作在不同的平臺上。支持C、C++、Java、Perl、PHP、Python和TCL API。 

(2) MySQL的缺點: 

1、 MySQL最大的缺點是其安全系統,主要是複雜而非標準,另外只有到調用mysqladmin來重讀用戶權限時才發生改變。 

2、 MySQL的另一個主要的缺陷之一是缺乏標準的RI(Referential Integrity-RI)機制;Rl限制的缺乏(在給定字段域上的一種固定的範圍限制)可以通過大量的數據類型來補償。 

3、 MySQL沒有一種存儲過程(Stored Procedure)語言,這是對習慣於企業級數據庫的程序員的最大限制。 

4、 MySQL不支持熱備份。 

5、 MySQL的價格隨平臺和安裝方式變化。Linux的MySQL如果由用戶自己或系統管理員而不是第三方安裝則是免費的,第三方案則必須付許可費。Unix或Linux 自行安裝 免費 、Unix或Linux 第三方安裝 200美元, 
SQL Server的優點衆多,但是Microsoft SQL Server和其他數據庫產品相比也存在着以下劣勢:

1開放性。只能運行在微軟的windows平臺,沒有絲毫的開放性可言。
2可伸縮性,並行性。並行實施和共存模型並不成熟,很難處理日益增多的用戶數和數據卷,伸縮性有限。
3性能穩定性。SQLServer當用戶連接多時性能會變的很差,並且不夠穩定。
4使用風險。SQLServer完全重寫的代碼,經歷了長期的測試,不斷延遲,許多功能需時間來證明。並不十分兼容早期產品。使用需要冒一定風險。
5客戶端支持及應用模式。只支持C/S模式。

13、mysql數據優化

答:1、創建索引對於查詢佔主要的應用來說,索引顯得尤爲重要。很多時候性能問題很簡單的就是因爲我們忘了添加索引而造成的,或者說沒有添加更爲有效的索引導致。如果不加索引的話,那麼查找任何哪怕只是一條特定的數據都會進行一次全表掃描,如果一張表的數據量很大而符合條件的結果又很少,那麼不加索引會引起致命的性能下降。但是也不是什麼情況都非得建索引不可,比如性別可能就只有兩個值,建索引不僅沒什麼優勢,還會影響到更新速度,這被稱爲過度索引。
2、複合索引比如有一條語句是這樣的:select * from users where area='beijing' and age=22;
如果我們是在area和age上分別創建單個索引的話,由於mysql查詢每次只能使用一個索引,所以雖然這樣已經相對不做索引時全表掃描提高了很多效率,但是如果在area、age兩列上創建複合索引的話將帶來更高的效率。如果我們創建了(area, age, salary)的複合索引,那麼其實相當於創建了(area,age,salary)、(area,age)、(area)三個索引,這被稱爲最佳左前綴特性。因此我們在創建複合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。
3、索引不會包含有NULL值的列只要列中包含有NULL值都將不會被包含在索引中,複合索引中只要有一列含有NULL值,那麼這一列對於此複合索引就是無效的。所以我們在數據庫設計時不要讓字段的默認值爲NULL。
4、使用短索引對串列進行索引,如果可能應該指定一個前綴長度。例如,如果有一個CHAR(255)的 列,如果在前10 個或20 個字符內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁盤空間和I/O操作。
5、排序的索引問題mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此數據庫默認排序可以符合要求的情況下不要使用排序操作;儘量不要包含多個列的排序,如果需要最好給這些列創建複合索引。
6、like語句操作一般情況下不鼓勵使用like操作,如果非使用不可,如何使用也是一個問題。like “%aaa%” 不會使用索引而like “aaa%”可以使用索引。
7、不要在列上進行運算select * from users where YEAR(adddate)<2007;
將在每個行上進行運算,這將導致索引失效而進行全表掃描,因此我們可以改成
select * from users where adddate<‘2007-01-01';
8、不使用NOT IN和<>操作NOT IN和<>操作都不會使用索引將進行全表掃描。NOT IN可以NOT EXISTS代替,id<>3則可使用id>3 or id<3來代替。

關注公衆號:工控技術之家,可留言提問相關問題,有需要可發送源代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章