简单mysql优化_mysql常见语句的简单优化策略
常見sql優化方法
(1)優化insert語句
大批量插入數據:
對于Myisam類型的表,可以通過以下方式快速的導入大量的數據。
ALTER TABLE tblname DISABLE KEYS; loading the data
ALTER TABLE tblname ENABLE KEYS;
這兩個命令用來打開或者關閉Myisam表非唯一索引的更新。在導入大量的數據到一個非空的Myisam表時,通過設置這兩個命令,可以提高導入的效率。對于導入大量數據到一個空的Myisam表,默認就是先導入數據然后才創建索引的,所以不用進行設置。
2.而對于Innodb類型的表,這種方式并不能提高導入數據的效率。對于Innodb
類型的表,我們有以下幾種方式可以提高導入的效率:
a.因為Innodb類型的表是按照主鍵的順序保存的,所以將導入的數據按照主鍵的順序排列,可以有效的提高導入數據的效率。如果Innodb表沒有主鍵,那么系統會默認創建一個內部列作為主鍵,所以如果可以給表創建一個主鍵,將可以利用這個優勢提高導入數據的效率。
b.在導入數據前執行
SET UNIQUE_CHECKS=0 ,關閉唯一性校驗,在導入結束后執行
SET UNIQUE_CHECKS=1,恢復唯一性校驗,可以提高導入的效率。
c.如果應用使用自動提交的方式,建議在導入前執行SET AUTOCOMMIT=0,關閉自動提交,導入結束后再執行SET AUTOCOMMIT=1,打開自動提交,也可以提高導入的效率。
11.4.2優化insert語句:
3. 如果你同時從同一客戶插入很多行,使用多個值表的
INSERT語句。這比使用分開insert into tablename
values(1,2),(1,3),(1,4)
4.如果你從不同客戶插入很多行,能通過使用INSERT DELAYED語句得到更高的速度。Delayed的含義是讓insert語句馬上執行,其實數據都被放在內存的隊列中,并沒有真正寫入磁盤;這比每條語句分別插入要快的多;LOW_PRIORITY
剛好相反,在所有其他用戶對表的讀寫完后才進行插入;
5.將索引文件和數據文件分在不同的磁盤上存放(利用建表中的選項);
6.如果進行批量插入,可以增加bulk_insert_buffer_size變量值的方法來提高速
度,但是,這只能對myisam表使用;
7.當從一個文本文件裝載一個表時,使用LOAD DATA INFILE。這通常比使用很多INSERT語句快20倍;
8.根據應用情況使用replace語句代替insert;
9.根據應用情況使用ignore關鍵字忽略重復記錄
總結
以上是生活随笔為你收集整理的简单mysql优化_mysql常见语句的简单优化策略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建筑与计算机技术,建筑设计中常用的计算机
- 下一篇: 修改所有列_哪些数据库是行存储?哪些是列