Тот же MySQL запрос занимает 0,3 секунды в phpMyAdmin, 7,9 секунды в PHP - почему? - PullRequest
1 голос
/ 18 ноября 2009

Я выполняю следующий MySQL запрос :

select * from combinations where family_type='f597';

На столе, который имеет около 90 000 строк. Если я запускаю запрос через phpMyAdmin, для запуска требуется 0,3 секунды, но на моей странице PHP на том же хосте это последовательно занимает около 8 секунд .

Чтобы проверить, сколько времени занимает моя страница, я запускаю ее так:

$secs = microtime(true);
$q = "select * from combinations where family_type='f597';";
$r = mysql_query($q);
$secs = round(microtime(true)-$secs, 3);
exit("$secs seconds");

Структура таблицы следующая:

CREATE TABLE `combinations` (
  `part_no` char(7) collate latin1_general_ci NOT NULL,
  `key_type` smallint(4) unsigned NOT NULL,
  `family_type` char(5) collate latin1_general_ci NOT NULL,
  `year_start` varchar(6) collate latin1_general_ci NOT NULL,
  `year_end` varchar(6) collate latin1_general_ci NOT NULL,
  `visual` varchar(31) collate latin1_general_ci NOT NULL ,
  `info_veh_0` varchar(255) collate latin1_general_ci NOT NULL,
  `info_veh_1` varchar(255) collate latin1_general_ci NOT NULL,
  `info_veh_2` varchar(255) collate latin1_general_ci NOT NULL,
  `key` mediumint(8) unsigned NOT NULL auto_increment,
  PRIMARY KEY  (`key`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=2349584 ;

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

[обновление 1] Я протестировал запрос вне любого другого программирования - я создал простую страницу test.php, которая содержала только информацию о соединении mysql и рассматриваемый запрос. Так что a priori это не какой-то другой аспект программирования сайта, который вызывает задержку.

[обновление 2] Фактическое время, необходимое для загрузки страницы, одинаково для phpMyAdmin и для моей тестовой страницы. Разница может быть связана с тем, что phpMyAdmin вычисляет время запроса.

В любом случае, если на обработку запроса уходит всего 0,3 секунды, откуда берется остальная часть задержки?

Ответы [ 3 ]

8 голосов
/ 18 ноября 2009

Это может быть связано с тем, что phpMyAdmin добавляет предложение limit за экраном из-за того, что оно разбивает результаты на страницы.

0 голосов
/ 18 ноября 2009

Если он установлен на Linux, вы можете попробовать запросить службу с помощью инструмента «mysql», если хотите проверить.

0 голосов
/ 18 ноября 2009

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

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