程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> MySQL手冊版本 5.0.20-MySQL優化(四) (1)(3)

MySQL手冊版本 5.0.20-MySQL優化(四) (1)(3)

編輯:關於PHP編程



7.2.12 加速 INSERT


插入一條記錄花費的時間由以下幾個因素決定,後面的數字大致表示影響的比例:


連接:(3)


發送查詢給服務器:(2)


解析查詢:(2)


插入記錄:(1 x 記錄大小)


插入索引:(1 x 索引數量)


關閉:(1)


這裡並沒有考慮初始化時打開數據表的開銷,因為每次運行查詢只會做這麼一次。


如果是 B-tree 索引的話,隨著索引數量的增加,插入記錄的速度以 log N 的比例下降。


可以使用以下幾種方法來提高插入速度:


如果要在同一個客戶端在同一時間內插入很多記錄,可以使用 INSERT 語句附帶有多個 VALUES 值。這種做法比使用單一值的 INSERT 語句快多了(在一些情況下比較快)。如果是往一個非空的數據表裡增加記錄,可以調整變量 bulk_insert_buffer_size 的值使之更快。詳情請看"5.2.3 Server System Variables"。


如果要從不同的客戶端中插入大量記錄,使用 INSERT DELAYED 語句也可以提高速度。詳情請看"14.1.4 INSERT Syntax"。


對 MyISAM 而言,可以在 SELECT 語句正在運行時插入記錄,只要這時候沒有正在刪除記錄。


想要將一個文本文件加載到數據表中,可以使用 LOAD DATA INFILE。這通常是使用大量 INSERT 語句的20倍。詳情請看"14.1.5 LOAD DATA INFILE Syntax"。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved