Мне нужно вставить данные в две таблицы: Items и Class_Items. (Третья таблица, классы связаны здесь, но не вставляются).Лучший способ ввести поле автоинкремента INSERT? (PHP/MySQL)
Первичным ключом элементов является Item_ID, и это автоматически увеличивающееся целое число. Помимо этого первичного ключа в элементах нет уникальных полей. Мне нужно знать, что Item_ID соответствует ему классам Class_Items.
Все это делается через интерфейс PHP. Мне интересно, как лучше всего вставить элементы, а затем сопоставить их Item_ID с Class_Items. Вот два основных варианта я вижу:
- ВСТАВИТЬ каждый элемент, а затем использовать mysql_insert_id(), чтобы получить его ITEM_ID для запроса Class_Items INSERT. Это означает один запрос для каждого элемента (всего запросов на тысячи запросов).
- Получите следующий идентификатор автоинкремента, затем закройте таблицу Class_Items, чтобы я мог просто добавлять к переменной $ item_id. Это означало бы только два запроса (один для предметов, один для Class_Items)
Какой способ является лучшим и почему? Кроме того, если у вас есть альтернатива, отличная от списка, я открыт для того, что наиболее эффективно.
Если вы регулярно добавляете тысячи предметов, то «стоимость запроса», указанная в первой альтернативе, не будет обычной проблемой; это только укусит вас во время первоначального импорта. Это, очевидно, зависит от вашей конкретной проблемы. – eykanal 2010-12-02 01:24:09
Достаточно справедливо. Мне все еще интересно, что лучше, даже если ставки сейчас не так высоки. В будущем я буду делать сотни тысяч – babonk 2010-12-02 01:28:01