二、按 Next,而後選擇安裝方式,有 "Typical(默認)"、"Complete(徹底)"、"Custom(用戶自定義)",選擇第二個選項 "Custom",下一步, MySQL Server (mysql服務器), Developer Components (開發者部分), Debug Symbols (調試符號), Server data files (服務器數據文件) 默認;
三、改變安裝路徑;原路徑是"C:\Program Files\MySQL\MySQL Server 5.5\",也能夠修改成:"E:\Program Files\MySQL Server 5.5\"。下一步,安裝,會彈出窗口,點下一步,再點下一步,選擇"Launch the MySql instance Configuration Wizard",意思是啓動MySQL實例配置嚮導,再點擊Finish,再點下一步,Detailed Configuration(詳細配置)和Standard Configuration(標準配置),選擇詳細配置,下一步;
四、選擇服務器類型,"Developer Machine(開發測試類,mysql佔用不多資源)"、"Server Machine(服務器類型,mysql佔用較多資源)"、"DedicatedMySQL Server Machine(專門的數據庫服務器,mysql佔用全部可用資源)",根據本身的類型選擇,測試軟件選"Developer Machine",服務器選"Server Machine",下一步;
五、選擇建立 MySQL表時使用的表處理器,"Multifunctional Database"(通用多功能型,好,同時使用InnoDB和 MyISAM 儲存引擎)、"Transactional Database Only"(服務器類型,專一於事務處理,主要使用 InnoDB 只偶爾使用 MyISAM,通常)、"Non-Transactional DatabaseOnly"(非事務處理型,較簡單,徹底禁用 InnoDB 儲存引擎,將全部服務器資源指派給 MyISAM 儲存引擎),隨本身的用途而選擇。
二 、新增my.ini文件初始化配置java
[mysqld]mysql
# 配置端口號sql
port=3306數據庫
# 設置mysql的安裝目錄服務器
basedir=C:\\java\\mysql-8.0.11-winx64性能
# 設置mysql數據庫的數據的存放目錄測試
datadir=C:\\java\\mysql-8.0.11-winx64\\Data優化
# 設置容許最大鏈接數url
max_connections=200spa
# 設置容許鏈接失敗的次數。
max_connect_errors=10
# 服務端使用的字符集默認爲UTF8
character-set-server=utf8
# 建立新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用「mysql_native_password」插件認證
default_authentication_plugin=mysql_native_password [mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8 [client]
# 設置mysql客戶端鏈接服務端時默認使用的端口
port=3306 default-character-set=utf8
MySQL優化
1. 避免使用 select * 你須要什麼信息,就查詢什麼信息,查詢的多了,查詢的速度確定就會慢
2. 當你只須要查詢出一條數據的時候,要使用 limit 1 好比你要查詢數據中是否有男生,只要查詢一條含有男生的記錄就好了,後面不須要再查了,使用Limit 1 能夠在找到一條數據後中止搜索
3. 創建高性能的索引 索引不是隨便加的也不是索引越多越好,更不是全部索引對查詢都有效
4. 建數據庫表時,給字段設置固定合適的大小. 字段不能設置的太大,設置太大就形成浪費,會使查詢速度變慢
5. 要儘可能使用not null
6. EXPLAIN 你的 SELECT 查詢 使用EXPLAIN,能夠幫助你更瞭解MySQL是如何處理你的sql語句的, 你能夠查看到sql的執行計劃,這樣你就能更好的去了解你的sql語句的不足,而後優化語句.
7. 在Join表的時候,被用來Join的字段,應該是相同的類型的,且字段應該是被建過索引的,這樣,MySQL內部會啓動爲你優化Join的SQL語句的機制。
8. 若是你有一個字段,好比「性別」,「國家」,「民族」, 「省份」,「狀態」或「部門」,這些字段的取值是有限並且固定的,那麼,應該使用 ENUM 而不是 VARCHAR。
由於在MySQL中,ENUM類型被看成數值型數據來處理,而數值型數據被處理起來的速度要比文本類型快得多。這樣,咱們又能夠提升數據庫的性能。
9. 垂直分割 將經常使用和有關係的字段放在相同的表中,把一張表的數據分紅幾張表 這樣能夠下降表的複雜度和字段的數目,從而達到優化的目的
10. 優化where查詢
①. 避免在where子句中對字段進行表達式操做
好比: select 列 from 表 where age*2=36; 建議改爲 select 列 from 表 where age=36/2;
②. 應儘可能避免在 where 子句中使用 !=或<> 操做符,不然將引擎放棄使用索引而進行全表掃描。
③. 應儘可能避免在 where 子句中對字段進行 null 值 判斷
④. 應儘可能避免在 where 子句中使用 or 來鏈接條件
11. 不建議使用%前綴模糊查詢,這種查詢會致使索引失效而進行全表掃描
例如LIKE 「%name」或者LIKE 「%name%這兩種都是不建議的.可是可使用LIKE 「name%」。
對於LIKE 「%name%,可使用全文索引的形式
12. 要慎用in和 not in
例如:select id from t where num in(1,2,3) 建議改爲 select id from t where num between 1 and 3
對於連續的數值,能用 between 就不要用 in 了
13. 理解in和exists, not in和not exists的區別
不少時候用 exists 代替 in 是一個好的選擇:如查詢語句使用了not in那麼內外表都進行全表掃描,沒用到索引,而not exists子查詢依然能用到表上索引,因此不管哪一個表大,用not exists都比not in要快。
select num from a where num in(select num from b)
建議改爲: select num from a where exists(select 1 from b where num=a.num)
區分in和exists主要是形成了驅動順序的改變(這是性能變化的關鍵),若是是exists,那麼之外層表爲驅動表,先被訪問,若是是IN,那麼先執行子查詢。因此IN適合於外表大而內表小的狀況;EXISTS適合於外表小而內表大的狀況。
關於not in和not exists,推薦使用not exists,不只僅是效率問題,not in可能存在邏輯問題
14. 理解select Count (*)和Select Count(1)以及Select Count(column)區別
通常狀況下,Select Count (*)和Select Count(1)兩着返回結果是同樣的
假如表沒有主鍵(Primary key), 那麼count(1)比count(*)快,
若是有主鍵的話,那主鍵做爲count的條件時候count(主鍵)最快
若是你的表只有一個字段的話那count(*)就是最快的
count(*) 跟 count(1) 的結果同樣,都包括對NULL的統計,而count(column) 是不包括NULL的統計