アイテムを格納するデータベースにテーブルがあります。各項目には一意の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