亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何提高 MySQL 數據庫性能?

如何提高 MySQL 數據庫性能?

PHP
子衿沉夜 2023-10-01 15:49:43
我編寫的網絡應用程序規模非常小,大部分時間僅供個人使用,因此數據庫大小和查詢時間對我來說從來都不是問題。我使用 InnoDB 數據庫類型,因為我習慣使用約束(ON DELETE CASADE),因為我排除了許多表中的許多信息并稍后將它們連接起來?,F在,我創建了一個 Web 應用程序,每周通過 CSV 文件導入一次數據。文件大小有時大于 1 MB,行數超過 50.000。CSV 文件來自沒有 API 的舊應用程序。訪問數據的唯一方法是將其導出為 CSV 并將其導入到我的應用程序中。我只是通過 php 將 CSV 上傳到服務器,然后使用 php 將數據逐行添加到我的 MySQL 數據庫中。詳細來說,我將遍歷文件的每一行并執行“INSERT INTO”查詢。因此,我在創建行和達到數據庫內存限制(默認值)時遇到了很大的加載時間。增加限制感覺就像做錯了什么,并且也會導致查詢時間過長。我可以做什么來提高數據庫的性能?編輯:它不能直接將 CSV 加載到 MySQL,因為我需要將內容拆分到不同的表中。例如:CSV 有一個帶有types. 我創建了一個types表并將值添加到該表中,在主表中我只添加了 id。這樣我以后在 php 中就有了更多的靈活性,因為我不需要處理值名稱。我只能用 ids 來工作。另外,我做了類似“如果數字以 XY 開頭,則將值 Z 添加到 mysql 表中的特定列”之類的操作
查看完整描述

2 回答

?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

如果文件中有數據,請使用load data infile.?這比一次插入一行數據要快得多。請注意,該文件需要在運行 MySQL 的服務器上可訪問。對于個人應用程序(可能在單臺計算機上運行),這不應該是問題。

我可能還建議將數據加載到臨時表中。然后從該表插入最終表。這使得處理傳入數據中的任何故障變得更加簡單。


查看完整回答
反對 回復 2023-10-01
?
達令說

TA貢獻1821條經驗 獲得超6個贊

如果您需要在插入之前在 php 應用程序中處理數據。您可以將多行組合成一條 INSERT 語句,這在 MySQL 中比每行一條 INSERT 語句要快得多。


$data = array(

   array(

      'title' => 'My title' ,

      'name' => 'My Name' ,

      'date' => 'My date'

   ),

   array(

      'title' => 'Another title' ,

      'name' => 'Another Name' ,

      'date' => 'Another date'

   )

);


$this->db->insert_batch('mytable', $data);


// Produces: INSERT INTO mytable (title, name, date) VALUES ('My title', 'My name', 'My date'), ('Another title', 'Another name', 'Another date')



查看完整回答
反對 回復 2023-10-01
  • 2 回答
  • 0 關注
  • 133 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號