編輯:澄清最初來自平面文件數據庫的記錄,但不在MySQL數據庫中。檢查和插入記錄的最佳方法
在我們現有的C程序中的一個,其目的是從該平面文件中的數據並將它們(基於標準)插入到MySQL表:從sql_table甲
Open connection to MySQL DB
for record in all_record_of_my_flat_file:
if record contain a certain field:
if record is NOT in sql_table A: // see #1
insert record information into sql_table A and B // see #2
Close connection to MySQL DB
- 選擇字段其中場= XXX
- 2個插入
我相信管理層也沒覺得這是值得添加的功能,這樣,當在平板音響領域le被創建,它會被插入到數據庫中。這是特定於一個客戶(我知道)。我也覺得奇怪,我們使用這種工具來「同步」數據。我被賦予使用和維護這個腳本的責任,所以我沒有太多的瞭解整個過程。目的是主要處理額外的記錄,所以這不是第一次使用它。
這通常每X個月進行一次,以便將所有內容同步或告訴我。我也被告知這個過程大概需要幾天。目前有(最多)250萬條記錄(儘管不一定所有的2.5米都會被插入,而且最有可能少得多)。其中一個表格包含10個字段和另外5個字段。關於遍歷記錄沒有太多的工作要做,因爲那一部分目前不能改變。我想要做的是加速查詢MySQL的部分。
我不確定我是否遺漏了任何重要細節 - 請讓我知道!我也沒有SQL專家,所以隨時指出明顯的。
我想過:
- 將所有插入到一個事務(目前我不知道它是多麼的重要,該交易將全部或無,或者如果這會影響性能)
- 使用插入X其中NOT EXISTSŸ
- LOAD DATA INFILE(但這需要我創建了一個(可能)大型臨時文件)
,我讀了(希望有人能確認)我應該放棄索引,所以他們不重新計算。
mysql Ver 14.7 Distrib 4.1.22, for sun-solaris2.10 (sparc) using readline 4.3
有大約2.5mil記錄(但不是全部)。我可以使用腳本來調用我們的工具,並進行一些字符串解析,但我認爲它會是相同的(如果不是更慢)。我將嘗試澄清問題中的其他問題。 – nevets1219 2010-05-21 19:03:44