Простой запрос выполняется дольше, чем большинство других запросов - PullRequest
0 голосов
/ 09 октября 2011

Я знаю, что это не так уж и важно, так как все еще быстро (благодаря силе mysqli!), Но это все еще действительно беспокоит меня, поэтому я был бы признателен за некоторые мысли по этому вопросу.

Большинствоиз запросов на моем сайте разработчика (windows localhost с appache и SQL) для выполнения требуется 0,002 или менее, даже массивные запросы с 5, где присоединяется и 5.

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

Вот таблица:

CREATE TABLE IF NOT EXISTS `content_users` (
  `content_id` int(10) unsigned NOT NULL,
  `user_id` mediumint(6) unsigned NOT NULL,
  UNIQUE KEY `content_id_2`
  (`content_id`,`user_id`),
  KEY `content_id` (`content_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Изапрос, который я пытаюсь выполнить:

INSERT INTO `content_users` (`content_id`, `user_id`) VALUES (96, 4)

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

В настоящее время в таблице всего 90 строкпоскольку это производственная среда, живая версия должна доходить до десятков тысяч.

Ответы [ 2 ]

0 голосов
/ 09 октября 2011

Поскольку у вас уже есть уникальный, я думаю, вам не нужно иметь два других индекса.MySQL использует только один индекс по запросу ...

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

Проблема в том, что, когда вы вставляете некоторые данные, вы обновляете таблицу, уникальный индекс и два других индекса.

0 голосов
/ 09 октября 2011

А как насчет индексов?Ваша таблица использует составной ключ, и проверка уникальности стоит времени.И это будет стоить дороже, когда будет больше пользователей.Создайте подходящие индексы для столбцов, используемых для ключа, и производительность улучшится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...