powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему EXPLAIN быстрый, а SELECT - нет?
7 сообщений из 7, страница 1 из 1
Почему EXPLAIN быстрый, а SELECT - нет?
    #38865266
Stan_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста,

Есть следующий запрос:

Код: plsql
1.
SELECT "emails"."emails".* FROM "emails"."emails"  WHERE "emails"."emails"."user_id" IN (20, 90, 124, 499, 509, 526, 724, 806, 975, 977, 985, 1066, 1083, 1089, 1093, 1141, 1148, 1154, 1169, 1191, 1201, 1213, 1252, 1260, 1273, 1281, 1292, 1309, 1322, 1331, 1338, 1375, 1385, 1393, 1417, 1418, 1588, 1634, 1635, 1649, 1657, 1664, 1666, 1667, 1687, 1691, 1704, 1714, 1737, 1743, 1765, 1777, 1785, 1800, 1811, 1827, 1851, 1863, 1866, 1878, 1896, 1905, 1929, 1936, 1953, 1977, 2001, 2003, 2004, 2063, 2072, 2089, 2107, 2113, 2134, 2185, 2192, 2233, 2236, 2260, 2270, 2274, 2301, 2303, 2325, 2371, 2372, 2386, 2411, 2416, 2424, 2442, 2448, 2470, 2479, 2506, 2524, 2551, 2581, 2605, 2665, 2672, 2707, 2717, 2722, 2742, 2751, 2770, 2778, 2779, 2796, 2814, 2857, 2905, 2910, 2965, 2977, 3019, 3112, 3130, 3133, 3134, 3214, 3370, 3383, 3397, 3405, 3435, 3443, 3549, 3616, 3650, 3705, 3725, 3726, 3769, 3772, 3806, 3824, 3829, 3831, 3840, 3854, 3868, 3873, 3886, 3911, 3963, 3993, 4009, 4025, 4034, 4098, 4104, 4106, 4110, 4112, 4133, 4148, 4191, 4192, 4198, 4203, 4209, 4227, 4301, 4322, 4328, 4348, 4424, 4435, 4440, 4449, 4540, 4544, 4586, 4624, 4646, 4715, 4731, 4740, 4760, 4764, 4826, 4838, 4891, 4928, 4970, 5015, 5031, 5098, 5101, 5102, 5145, 5168, 5169, 5219, 5230, 5280, 5311, 5384, 5401, 5443, 5449, 5526, 5529, 5542, 5581, 5589, 5603, 5621, 5628, 5661, 5673, 5722, 5802, 5805, 5824, 5842, 5848, 5871, 5898, 5926, 5928, 5936, 5974, 5979, 6043, 6066, 6069, 6071, 6094, 6147, 6153, 6156, 6186, 6188, 6273, 6306, 6344, 6418, 6439, 6442, 6456, 6501, 6574, 6578, 6590, 6655, 6668, 6674, 6727, 6731, 6732, 6736, 6774, 6790, 6796, 6822, 6823, 6873, 6945, 7007, 7053, 7060, 7061, 7067, 7110, 7139, 7155, 7208, 7210, 7218, 7244, 7245, 7273, 7287, 7305, 7312, 7363, 7420, 7463, 7494, 7528, 7608, 7653, 7771, 7786, 7793, 7799, 7822, 7867, 7873, 7939, 7984, 8044, 8183, 8226, 8282, 8297, 8326, 8330, 8455, 8487, 8522, 8580, 8611, 8613, 8617, 8637, 8677, 8744, 8763, 8764, 8784, 8788, 8798, 8806, 8810, 8875, 8910, 8922, 8933, 8959, 8975, 8979, 8990, 9062, 9084, 9086, 9104, 9106, 9128, 9150, 9167, 9190, 9214, 9236, 9263, 9275, 9321, 9344, 9373, 9378, 9416, 9422, 9432, 9434, 9457, 9463, 9464, 9482, 9506, 9510, 9561, 9621, 9685, 9695, 9703, 9718, 9722, 9750, 10394, 10403, 10405, 10429, 10437, 10468, 10480, 10498, 10516, 10526, 10528, 10532, 10539, 10552, 10557, 10602, 10610, 10617, 10636, 10649, 10661, 10662, 10681, 10903, 10921, 10929, 10983, 11014, 11020, 11022, 11087, 11142, 11163, 11176, 11199, 11238, 11256, 11289, 11291, 11338, 11376, 11518, 11520, 11541, 11548, 11574, 11748, 11784, 11787, 11792, 11856, 11874, 11880, 11937, 11939, 11954, 11967, 11984, 12062, 12071, 12114, 12153, 12195, 12244, 12250, 12253, 12302, 12351, 12374, 12388, 12436, 12445, 12461, 12502, 12517, 12548, 12611, 12618, 12714, 12790, 12799, 12808, 12813, 12818, 12838, 12842, 12887, 12972, 12974, 12992, 13036, 13044, 13050, 13051, 13060, 13068, 13069, 13083, 13134, 13158, 13193, 13213, 13235, 13239, 13256, 13291, 13298, 13305, 13345, 13350, 13370, 13447, 13452, 13481, 13540, 13572) AND "emails"."emails"."email_id" IN ('credit_init')



Он выполняется со следующим результатом 7863 rows in set (36.42 sec)

Делаю тоже самое но перед запросом пишу EXPLAIN (ANALYSE,BUFFERS)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Bitmap Heap Scan on emails  (cost=974.54..4967.25 rows=1466 width=743) (actual time=6.635..10.459 rows=7863 loops=1)
  Recheck Cond: (((email_id)::text = 'credit_init'::text) AND (user_id = ANY ('{20,90,124,499,509,526,724,806,975,977,985,1066,1083,1089,1093,1141,1148,1154,1169,1191,1201,1213,1252,1260,1273,1281,1292,1309,1322,1331,1338,1375,1385,1393,1417,1418,1588,1634,1635,1649,1657,1664,1666,1667,1687,1691,1704,1714,1737,1743,1765,1777,1785,1800,1811,1827,1851,1863,1866,1878,1896,1905,1929,1936,1953,1977,2001,2003,2004,2063,2072,2089,2107,2113,2134,2185,2192,2233,2236,2260,2270,2274,2301,2303,2325,2371,2372,2386,2411,2416,2424,2442,2448,2470,2479,2506,2524,2551,2581,2605,2665,2672,2707,2717,2722,2742,2751,2770,2778,2779,2796,2814,2857,2905,2910,2965,2977,3019,3112,3130,3133,3134,3214,3370,3383,3397,3405,3435,3443,3549,3616,3650,3705,3725,3726,3769,3772,3806,3824,3829,3831,3840,3854,3868,3873,3886,3911,3963,3993,4009,4025,4034,4098,4104,4106,4110,4112,4133,4148,4191,4192,4198,4203,4209,4227,4301,4322,4328,4348,4424,4435,4440,4449,4540,4544,4586,4624,4646,4715,4731,4740,4760,4764,4826,4838,4891,4928,4970,5015,5031,5098,5101,5102,5145,5168,5169,5219,5230,5280,5311,5384,5401,5443,5449,5526,5529,5542,5581,5589,5603,5621,5628,5661,5673,5722,5802,5805,5824,5842,5848,5871,5898,5926,5928,5936,5974,5979,6043,6066,6069,6071,6094,6147,6153,6156,6186,6188,6273,6306,6344,6418,6439,6442,6456,6501,6574,6578,6590,6655,6668,6674,6727,6731,6732,6736,6774,6790,6796,6822,6823,6873,6945,7007,7053,7060,7061,7067,7110,7139,7155,7208,7210,7218,7244,7245,7273,7287,7305,7312,7363,7420,7463,7494,7528,7608,7653,7771,7786,7793,7799,7822,7867,7873,7939,7984,8044,8183,8226,8282,8297,8326,8330,8455,8487,8522,8580,8611,8613,8617,8637,8677,8744,8763,8764,8784,8788,8798,8806,8810,8875,8910,8922,8933,8959,8975,8979,8990,9062,9084,9086,9104,9106,9128,9150,9167,9190,9214,9236,9263,9275,9321,9344,9373,9378,9416,9422,9432,9434,9457,9463,9464,9482,9506,9510,9561,9621,9685,9695,9703,9718,9722,9750,10394,10403,10405,10429,10437,10468,10480,10498,10516,10526,10528,10532,10539,10552,10557,10602,10610,10617,10636,10649,10661,10662,10681,10903,10921,10929,10983,11014,11020,11022,11087,11142,11163,11176,11199,11238,11256,11289,11291,11338,11376,11518,11520,11541,11548,11574,11748,11784,11787,11792,11856,11874,11880,11937,11939,11954,11967,11984,12062,12071,12114,12153,12195,12244,12250,12253,12302,12351,12374,12388,12436,12445,12461,12502,12517,12548,12611,12618,12714,12790,12799,12808,12813,12818,12838,12842,12887,12972,12974,12992,13036,13044,13050,13051,13060,13068,13069,13083,13134,13158,13193,13213,13235,13239,13256,13291,13298,13305,13345,13350,13370,13447,13452,13481,13540,13572}'::integer[])))
  Buffers: shared hit=2871
  ->  BitmapAnd  (cost=974.54..974.54 rows=1466 width=0) (actual time=6.201..6.201 rows=0 loops=1)
        Buffers: shared hit=1035
        ->  Bitmap Index Scan on emails_emails_email_id_idx  (cost=0.00..267.32 rows=11604 width=0) (actual time=2.430..2.430 rows=11574 loops=1)
              Index Cond: ((email_id)::text = 'credit_init'::text)
              Buffers: shared hit=46
        ->  Bitmap Index Scan on emails_emails_user_id_idx  (cost=0.00..706.24 rows=5928 width=0) (actual time=3.435..3.435 rows=11931 loops=1)
              Index Cond: (user_id = ANY ('{20,90,124,499,509,526,724,806,975,977,985,1066,1083,1089,1093,1141,1148,1154,1169,1191,1201,1213,1252,1260,1273,1281,1292,1309,1322,1331,1338,1375,1385,1393,1417,1418,1588,1634,1635,1649,1657,1664,1666,1667,1687,1691,1704,1714,1737,1743,1765,1777,1785,1800,1811,1827,1851,1863,1866,1878,1896,1905,1929,1936,1953,1977,2001,2003,2004,2063,2072,2089,2107,2113,2134,2185,2192,2233,2236,2260,2270,2274,2301,2303,2325,2371,2372,2386,2411,2416,2424,2442,2448,2470,2479,2506,2524,2551,2581,2605,2665,2672,2707,2717,2722,2742,2751,2770,2778,2779,2796,2814,2857,2905,2910,2965,2977,3019,3112,3130,3133,3134,3214,3370,3383,3397,3405,3435,3443,3549,3616,3650,3705,3725,3726,3769,3772,3806,3824,3829,3831,3840,3854,3868,3873,3886,3911,3963,3993,4009,4025,4034,4098,4104,4106,4110,4112,4133,4148,4191,4192,4198,4203,4209,4227,4301,4322,4328,4348,4424,4435,4440,4449,4540,4544,4586,4624,4646,4715,4731,4740,4760,4764,4826,4838,4891,4928,4970,5015,5031,5098,5101,5102,5145,5168,5169,5219,5230,5280,5311,5384,5401,5443,5449,5526,5529,5542,5581,5589,5603,5621,5628,5661,5673,5722,5802,5805,5824,5842,5848,5871,5898,5926,5928,5936,5974,5979,6043,6066,6069,6071,6094,6147,6153,6156,6186,6188,6273,6306,6344,6418,6439,6442,6456,6501,6574,6578,6590,6655,6668,6674,6727,6731,6732,6736,6774,6790,6796,6822,6823,6873,6945,7007,7053,7060,7061,7067,7110,7139,7155,7208,7210,7218,7244,7245,7273,7287,7305,7312,7363,7420,7463,7494,7528,7608,7653,7771,7786,7793,7799,7822,7867,7873,7939,7984,8044,8183,8226,8282,8297,8326,8330,8455,8487,8522,8580,8611,8613,8617,8637,8677,8744,8763,8764,8784,8788,8798,8806,8810,8875,8910,8922,8933,8959,8975,8979,8990,9062,9084,9086,9104,9106,9128,9150,9167,9190,9214,9236,9263,9275,9321,9344,9373,9378,9416,9422,9432,9434,9457,9463,9464,9482,9506,9510,9561,9621,9685,9695,9703,9718,9722,9750,10394,10403,10405,10429,10437,10468,10480,10498,10516,10526,10528,10532,10539,10552,10557,10602,10610,10617,10636,10649,10661,10662,10681,10903,10921,10929,10983,11014,11020,11022,11087,11142,11163,11176,11199,11238,11256,11289,11291,11338,11376,11518,11520,11541,11548,11574,11748,11784,11787,11792,11856,11874,11880,11937,11939,11954,11967,11984,12062,12071,12114,12153,12195,12244,12250,12253,12302,12351,12374,12388,12436,12445,12461,12502,12517,12548,12611,12618,12714,12790,12799,12808,12813,12818,12838,12842,12887,12972,12974,12992,13036,13044,13050,13051,13060,13068,13069,13083,13134,13158,13193,13213,13235,13239,13256,13291,13298,13305,13345,13350,13370,13447,13452,13481,13540,13572}'::integer[]))
              Buffers: shared hit=989
Total runtime: 11.203 ms



REINDEX и VACCUM сделал. Почему запрос может выполняться так медленно?
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38865286
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stan_1,

Вы сначала расскажите чем меряли "Он выполняется со следующим результатом 7863 rows in set (36.42 sec)"
кодом или как водится pgadmin ом?
скорее всего вторым... а им нельзя время мерять никогда так как он во время включает время отрисовки таблицы у себя и прочее и на больших ответах всегда меделенно очень работает (и соответственно показывает медленное время).

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38865288
Stan_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

по разному. И через консоль текстовую, и через внутренний скрипт, который делает просто SELECT, или через админку NaviCat. В любом случае - меньше 9 секунд не получалось. А типичное время - 9-17 секунд.
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38865310
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stan_1Maxim Boguk,

по разному. И через консоль текстовую, и через внутренний скрипт, который делает просто SELECT, или через админку NaviCat. В любом случае - меньше 9 секунд не получалось. А типичное время - 9-17 секунд.

а если локально на базе
psql -A ваша_база
\timing
\o /tmp/query_result.txt
ваш_select;

то
1)сколько времени занимает по данным psql консоли
2)какого размера получается файл /tmp/query_result.txt ?

PS: сейчас остаются две теории... как раз вот эти два вопроса помогут решить какой из двух вариантов рабочий.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38866729
Stan_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukStan_1Maxim Boguk,

по разному. И через консоль текстовую, и через внутренний скрипт, который делает просто SELECT, или через админку NaviCat. В любом случае - меньше 9 секунд не получалось. А типичное время - 9-17 секунд.

а если локально на базе
psql -A ваша_база
\timing
\o /tmp/query_result.txt
ваш_select;

то
1)сколько времени занимает по данным psql консоли
2)какого размера получается файл /tmp/query_result.txt ?

PS: сейчас остаются две теории... как раз вот эти два вопроса помогут решить какой из двух вариантов рабочий.

--Maxim Boguk
www.postgresql-consulting.ru

Сорри за паузу
1. Time: 548.497 ms
2. -rw-r--r-- 1 admin admin 76552315 Jan 29 06:29 /tmp/select.txt
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38866785
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stan_1,

а за какое время вы хотите передать 100MB ответа базы на клиента по сети интересно?
если сеть 100mbit как раз ~9 секунд и получится (+ клиенту это все еще разбирать).

т.е. или сеть быстрее или не * выбирать а те поля что вам надо чтобы размер ответа был нормальный,
лимитирующий фактор для вас пропускная способность сети сейчас.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
Почему EXPLAIN быстрый, а SELECT - нет?
    #38866809
Stan_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukStan_1,

а за какое время вы хотите передать 100MB ответа базы на клиента по сети интересно?
если сеть 100mbit как раз ~9 секунд и получится (+ клиенту это все еще разбирать).

т.е. или сеть быстрее или не * выбирать а те поля что вам надо чтобы размер ответа был нормальный,
лимитирующий фактор для вас пропускная способность сети сейчас.

--Maxim Boguk
www.postgresql-consulting.ru

Черт. :( Я читал это как 7 мбайт. :( Понял. Сорри.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Почему EXPLAIN быстрый, а SELECT - нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]