|
|
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Необходимо вытащить самую низкую цену из таблицы цен. в данной таблице много дат идекс комбинированный вот два запроса в первом берем цены до сегодня. во второй берем с завтра (нужен этот запрос) mysql> explain SELECT *, min(price) as p FROM Cat_Claim WHERE tour = 376 and CheckIn < CURDATE(); +----+-------------+-----------+-------+------------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+-------+------------------+------+---------+------+------+-------------+ | 1 | SIMPLE | Cat_Claim | range | Tour,CheckIn,t_c | t_c | 7 | NULL | 10 | Using where | +----+-------------+-----------+-------+------------------+------+---------+------+------+-------------+ 1 row in set (0.00 sec) mysql> explain SELECT *, min(price) as p FROM Cat_Claim WHERE tour = 376 and CheckIn > CURDATE(); +----+-------------+-----------+------+------------------+------+---------+-------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-----------+------+------------------+------+---------+-------+----------+-------------+ | 1 | SIMPLE | Cat_Claim | ref | Tour,CheckIn,t_c | Tour | 4 | const | 37736646 | Using where | +----+-------------+-----------+------+------------------+------+---------+-------+----------+-------------+ 1 row in set (0.01 sec) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:25:33 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
mmm3SELECT *, min(price)Это что за бессмыслица? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:34:58 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoft, ошибся select min(price) from .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 16:41:42 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
mmm3miksoft, ошибся select min(price) from .... Т.е. Код: sql 1. 2. 3. Для максимального ускорения такого запроса необходимый индекс - просто таки очевиден. Hint: он составной... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 17:15:46 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
mmm3, Сколько записей всего в таблице? Сколько выдадут следующие запросы: Код: sql 1. Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:01:35 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftmmm3, Сколько записей всего в таблице? 70 млн Сколько выдадут следующие запросы: Код: sql 1. Код: sql 1. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:21:29 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Попробуйте создать индекс (tour, price, CheckIn). Не уверен, что MySQL с ним справится. Но если справится, то для второго запроса может помочь. После создания индекса выполните ANALYZE TABLE Cat_Claim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:28:10 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftПопробуйте создать индекс (tour, price, CheckIn)А не (tour, CheckIn, price)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:39:38 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
AkinaА не (tour, CheckIn, price)?Для первого запроса - возможно. Для второго точно смысла нет. Придется сканировать 35 млн записей в индексе. Тогда как в моем варианте достаточно сканировать до первого подходящего CheckIn > CURDATE(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 18:46:37 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
mmm3miksoftmmm3, Сколько записей всего в таблице? 70 млн Сколько выдадут следующие запросы: Код: sql 1. Код: sql 1. ? весело, блин... и что же ты тут хочешь оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 23:11:38 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftAkinaА не (tour, CheckIn, price)?Для первого запроса - возможно. Для второго точно смысла нет. Придется сканировать 35 млн записей в индексе. Тогда как в моем варианте достаточно сканировать до первого подходящего CheckIn > CURDATE(). в обоих случаях как Акина сказал надо индекс делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2014, 23:13:24 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
можно так но индекс надо tour CheckIn price Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 04:57:23 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Я вообще не понимаю, за что копья ломать. Фильтр WHERE оставляет ПОЛОВИНУ записей таблицы. Так что индекс если используется - то скорее как компактная версия таблицы, без лишних полей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 08:59:13 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
AkinaЯ вообще не понимаю, за что копья ломать.За то, чтобы не сканировать 35 миллионов записей (пусть даже и записей индекса), а как можно меньше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 09:23:33 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Для этого надо понимать внутреннюю кухню кода сервера - как именно он будет выполнять сканирование индекса для поиска решения. Я в этом углублённо не копался - мне проще построить модель, набить фейком и сравнить скорости работы, ибо для меня это не основная и даже не дополнительная работа, сроки не тянут, а нужно редко. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 10:51:31 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Для нахождения неизвестного минимального значения, итоговая функция проверит все строки (хотите Вы этого или нет). Единственный на мой взгляд вариант, это разбить саму таблицу на несколько, чтобы не было 70 млн. записей в одной таблице. Кстати можно попробовать сыграть на порядке выполнения проверки WHERE . Если кол-во значений по условию CheckIn > CURDATE() меньше 40 млн, то будет иметь смысл сделать не WHERE tour = 376 and CheckIn > CURDATE(); , а WHERE CheckIn > CURDATE() and tour = 376; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 15:01:40 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
bochkovможно так но индекс надо tour CheckIn price Код: sql 1. 2. 3. 4. 5. Кстати, на индексе (tour,CheckIn,price) имеем такую картинку: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:10:30 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Можете словами описать выводы? А то лень в чуждые картинки вникать. Я MS SQL даже на картинках уже сто лет не видел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:20:18 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007, Можете словами описать выводы? А то лень в чуждые картинки вникать. Я MS SQL даже на картинках уже сто лет не видел. Да просто подтвержденее на картинках ранее высказанного miksoftAkinaА не (tour, CheckIn, price)?Для первого запроса - возможно. Для второго точно смысла нет. Придется сканировать 35 млн записей в индексе. Тогда как в моем варианте достаточно сканировать до первого подходящего CheckIn > CURDATE(). Ровно это и ничего больше... Но - красиво А то тут уже начали предлагать порядок условий в WHERE поменять... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:24:16 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007, Ну оптимизатор в MS SQL все-таки поумнее будет. Способен ли на такое MySQL - не уверен, а пробовать, увы, некогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:27:16 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
miksoftCygapb-007, Ну оптимизатор в MS SQL все-таки поумнее будет. Способен ли на такое MySQL - не уверен, а пробовать, увы, некогда.Вы про распараллеливание на 4 процессора? ЯТД, суть не в этом, а в толщине линий (над ними указано число передаваемых по линии строк таблицы, соответственно чем больше строк, тем толще линия) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:33:33 |
|
||
|
помогите. как можно ускорить запрос?
|
|||
|---|---|---|---|
|
#18+
Cygapb-007miksoftCygapb-007, Ну оптимизатор в MS SQL все-таки поумнее будет. Способен ли на такое MySQL - не уверен, а пробовать, увы, некогда.Вы про распараллеливание на 4 процессора? ЯТД, суть не в этом, а в толщине линий (над ними указано число передаваемых по линии строк таблицы, соответственно чем больше строк, тем толще линия)Нет, я про ограниченное сканирование, которое быстрее чем полное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2014, 16:35:58 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38823939&tid=1833844]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
88ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 410ms |

| 0 / 0 |
