我有一個數據庫中存儲項目的表。每個項目都有一個唯一的ID,DB在插入時自動生成(自動遞增)。
用戶可能執行將X項添加到數據庫的特定任務,但是我的程序(使用MySQL連接器的C++服務器應用程序)應該立即返回數據庫生成的ID。例如,如果我添加6個項目,則服務器必須向客戶端返回6個新的唯一ID。
什麼是做這種事最快/最乾淨的方式?到目前爲止,我一直在做INSERT
,其次是SELECT
,對於每個新項目或INSERT
,然後是last_insert_id
,但是如果有50個項目要添加,則至少需要幾秒鐘,這對用戶體驗來說是不好的。最快的方法來選擇幾個插入的行
sql_task.query("INSERT INTO `ItemDB` (`ItemName`, `Type`, `Time`) VALUES ('%s', '%d', '%d')", strName.c_str(), uiType, uiTime);
獲取ID:
uint64_t item_id { sql_task.last_id() }; //This calls mysql_insert_id
請加一些代碼請 –
好吧,我加了一些代碼。這一切都很好,但一點都不快。 – Spook