![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Itsys |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
Вопрос: в таблицу надо вставить, допустим 10000 однотипных строк
Что лучше использовать
или
|
||||||
|
|||||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Itsys, создавать массив из 10000 строк, думаю, не лучший вариант. С точки зрения быстродействия, оба варианта одинаковы. Для увеличения быстродействия необходимо вставлять несколько строк в одном запросе.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
Можно в 1 INSERT'e передавать данные сразу для нескольких записей
такой вариант будет работает быстрее и execute для 1 записи, и execute_array |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
Несколько записей, это как?
INSERT INSERT INSERT |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Да, именно так
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
Проблема в том, что что либо INSERT будет производится при чтении очередной строки из файла, либо в конце чтения скопом.... промежуточные вставка по 10, 20, 30 строк - мне кажется смысла не имеют, только увеличивают размер кода, количество проверок условий и переменных.
|
|||
|
||||
| ramus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 21.2.2008 Репутация: 1 Всего: 1 |
Я пробовал вставлять записи в БД ORACLE по разному, но разницы ни в производительности, ни со стороны оракла (кол-во execute на сессию) не увидел. Такое подозрение, что у перл драйвер оракла подменяет все на одиночный инсерт (не умеет работать с bulk коллекцией).
Для себя решил: если надо грузить большие объемы данных (сотни тысяч строк - более 100МБ данных), то лучше на перле если надо обработать входной файл для sqlloader (утилита от оракла) и затем загрузить его этой утилитой. Разница во времени работы различается на порядок!!! Это сообщение отредактировал(а) ramus - 26.2.2008, 22:41 |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
У меня MS SQL... да и данных ну максимум 20000-30000 строк
|
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 5 Всего: 7 |
Несколько записей -- это
INSERT INTO Table (field1, field2, field3, field4, field5, field6, field7) VALUES (?, ?, ?, ?, ?, ?, ?), VALUES (?, ?, ?, ?, ?, ?, ?), VALUES (?, ?, ?, ?, ?, ?, ?), VALUES (?, ?, ?, ?, ?, ?, ?), VALUES (?, ?, ?, ?, ?, ?, ?); Большинство баз такое понимает |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
vadiml, MySQL понимает вариант
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| shamber |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1422 Регистрация: 5.9.2006 Где: Россия Репутация: 17 Всего: 18 |
что-то я совсем запутался :0 а на месте ? стоят реальные данные или их потом подставляют когда execute делается?
можно пример простенький |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
shamber, если DBD поддерживает server-side placeholders, то лучше данные подставлять в execute() или bind() (а prepare() вызывать один раз до цикла). Если не поддерживает, то без разницы.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
По поводу
Я уже писал... |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Itsys, мне кажется, что Вы еще не замеряли, сколько по времени скрипт будет вставлять в базу Ваши 20000-30000 строк.
P.S. увеличение размера кода, количества проверок условий и переменных незначительно Это сообщение отредактировал(а) ginnie - 27.2.2008, 15:58 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: 2 Всего: 34 |
Замерял
я сейчас использую
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |