MySQL ОБНОВЛЕНИЕ быстрее, чем INSERT INTO? - PullRequest
5 голосов
/ 15 июля 2010

Это больше вопрос теории.

Если я выполняю 50000 запросов, которые вставляют новые строки, и 50000 запросов, которые обновляют эти строки, какой из них займет меньше времени?

Ответы [ 4 ]

5 голосов
/ 30 сентября 2011
Insert Operation : Create  -> Store

Update Operation : Retrieve -> Modify -> Store

Операция вставки быстрее.

5 голосов
/ 15 июля 2010

Вставка была бы быстрее, потому что с обновлением вам нужно сначала найти запись, которую вы собираетесь обновить, а затем выполнить обновление.

Хотя это вряд ли выглядит как правильное сравнение, поскольку у вас никогда нет выборавставлять или обновлять, так как два заполняют две совершенно разные потребности.

РЕДАКТИРОВАТЬ: Я должен также добавить, что это с предположением, что нет никаких триггеров вставки или других ситуаций, которые могут вызвать потенциальные узкие места.

1 голос
/ 30 сентября 2011

Вставив в одну и ту же таблицу, вы всегда можете вставить все строки одним запросом, делая это намного быстрее, чем вставляя одну за другой.При обновлении вы можете обновлять несколько строк одновременно, но вы не можете применить это к каждой ситуации обновления, и часто вам приходится запускать один запрос на обновление за раз (при обновлении определенного идентификатора) - и для большой таблицы этомедленно, чтобы найти строку, а затем обновлять ее каждый раз.По моему опыту, это также медленнее, даже если вы проиндексировали таблицу.

0 голосов
/ 24 июля 2012

Помимо этого, не забывайте, что, загружая больше вставок, чем обновлений, у вас появляется больше строк, когда вы выбираете, поэтому вы замедляете операцию чтения.

Таким образом, возникает настоящий вопрос - что вас больше волнует, быстрая вставка или быстрое чтение. Опять же, это зависит от определенных факторов, в частности (и еще не упомянутых) движка БД, такого как InnoDB (который теперь является стандартным в PHPMyAdmin).

Я согласен со всеми остальными - слишком много, чтобы рассмотреть в каждом конкретном случае, и поэтому вам действительно нужно запустить свои собственные тесты и оценить ситуацию оттуда на основе ваших потребностей.

...