MySQL 似乎更新速度很慢。對于相同的更新呼叫,一個簡單的更新陳述句比 MS SQL 花費更多的時間。
前任:
UPDATE ValuesTbl SET value1 = @value1,
value2 = @value2
WHERE co_id = @co_id
AND sel_date = @sel_date
我已經更改了一些配置設定,如下所示
innodb_flush_log_at_trx_commit=2
innodb_buffer_pool_size=10G
innodb_log_file_size=2G
log-bin="foo-bin"
skip-log-bin
這是創建表查詢
CREATE TABLE `valuestbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sel_date` datetime NOT NULL,
`co_id` int(11) NOT NULL,
`value1` decimal(10,2) NOT NULL,
`value2` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21621889 DEFAULT CHARSET=latin1;
MySQL 版本:Windows 上的 8.0
與 MS SQL 相比,更新查詢需要更長的時間來更新,我還需要做些什么來使其更快?
uj5u.com熱心網友回復:
沒有索引,ValuesTbl 表有一個 PK,不用于任何事情。id 列是另一個表的主鍵,sel_date 是日期欄位和 2 個十進制列
如果沒有索引,ValuesTbl則更新必須掃描整個表,如果表很大,這將很慢。再多的服務器調整都無法解決這個問題。
對于相同的更新呼叫,一個簡單的更新陳述句比 MS SQL 花費更多的時間。
MS SQL 服務器可能在co_id或上都有一個索引sel_date。或者它在表中的行數較少。
您需要添加索引,例如一本書的索引,這樣資料庫就不必搜索整個表。至少一個索引co_id將極大地提高性能。如果sel_date每個 ID有許多不同的列,則復合索引(co_id, sel_date)會進一步提供幫助。
有關索引的詳盡教程,請參閱Use The Index, Luke。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/419733.html
標籤:
