2013-03-31 2 views
0

Я запускаю 8-гигабайтный, четырехъядерный, облачный сервер SSD.Простой запрос MySQL 16 секунд

Большинство запросов БД выполняются быстро, но один запрос, обновляющий только один столбец для одной строки, занимает до 16 секунд, согласно New Relic.

Мой запрос:

UPDATE user SET ad=$currentAdSet WHERE ckey='$_COOKIE[ckey]' 

И я использую функцию mysql_query("") PHP для выполнения запроса.

Mu user стол имеет около 43000 рядов и простую структуру.

Почему этот запрос занимает так много времени? Есть идеи?

+0

Является ли это в цикле? – 2013-03-31 19:17:56

+0

Есть ли индекс в столбце 'ckey'? –

+0

- 'ckey' - это индекс? ' – 2013-03-31 19:18:46

ответ

2

Попробуйте добавить индекс на ckey и снова проверьте сроки. Я бы посоветовал некоторое чтение по индексам.

BTW, используя непосредственно значение куки может привести к инъекции SQL

+0

Это сработало! Спасибо :) –

2

Вы можете попробовать и посмотреть, что делает его настолько медленно, с помощью EXPLAIN. Затем, основываясь на шейках бутылки, вы видите, используйте индексы.

+1

Обязательно помните 'EXPLAIN' на будущее! :) –

0

обеспечить CKEY индексируемой и, если он не нужен, объявление НЕ индексируются.

первый позволит быстрее выборку записей, второй быстрее обновлять

надеюсь, что это помогает

Смежные вопросы