Jump to content
  • 0

Как можно ускорить?


xaero
 Share

Question

Вот у меня есть такой SQL:

(SELECT 
`id_zv` AS `id_zv`,
`orders_id` AS `orders_id`,
`type_zv` AS `type_zv`,
`man_id` AS `man_id`,
`telephone` AS `telephone`,
`date_start` AS `date_start`,
`last_mod` AS `last_mod`,
`prodolwit` AS `prodolwit`,
`is_ok` AS `is_ok`,
`local_hour` AS `local_hour`,
`count` AS `count`,
`record` AS `record`,
`COMMENT` AS `COMMENT` ,
'phone' AS `TYPE` ,
'' AS `dest`
FROM orders_status_otzvon WHERE 0 =0 )
UNION (
SELECT
`id_cd` AS `id_zv`,
`orders_id` AS `orders_id`,
`type_zv` AS `type_zv`,
`man_id` AS `man_id`,
`telephone` AS `telephone`,
`calldate` AS `date_start`,
'' AS `last_mod`,
`billsec` AS `prodolwit`,
`disposition` AS `is_ok`,
'' AS `local_hour`,
'' AS `count`,
`userfield` AS `record`,
`COMMENT` AS `COMMENT` ,
'cdr' AS `TYPE` ,
`dst` AS `dest`
FROM cdr
WHERE 0 =0)
ORDER BY `date_start` DESC
LIMIT 0 , 25

у меня локалке работает 0.078 -

а сервере 10 сек (долго) ...

кто нибудь знает как ускорить процесс ?

Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

А количество записей на локалке и на сервере в таблицах одинаковое? Такой запрос будет выполняться секунд 10, если запсей будет несколько миллионов, а то и больше. При большом количестве записей не рекомендуется использовать ORDER BY и LIMIT. Нужно как-то определить что дата будет на более такого-то числа, навешать на время индекс и выбирать, пускай и с излишком, записи больше заданной даты. Но повторюсь, это если записей не счесть. Если у тебя их до тысячи, проблема точно не в этом.

Link to comment
Share on other sites

  • 0

так пробовал но c пейджингом беда:

(SELECT id_zv as id_zv, orders_id as orders_id, type_zv as type_zv, man_id as man_id, telephone as telephone, date_start as date_start, last_mod as last_mod, prodolwit as prodolwit, is_ok as is_ok, local_hour as local_hour, count as count, record as record, comment as comment, 'phone' as type, '' as dest FROM orders_status_otzvon WHERE ( `type_zv` = 'sip_not_answered' OR `man_id` = 100 ) AND (`is_ok` = 0 AND `orders_id` = 1785 AND `date_start` >= '2009-06-06 12:00:33' AND date_start<='2009-07-09 12:00:12 23:59:00' AND `telephone` = 'TEST' ) ORDER BY date_start DESC LIMIT 0, 20) UNION (SELECT id_cd as id_zv, orders_id as orders_id, type_zv as type_zv, man_id as man_id, telephone as telephone, calldate as calldate, '' as last_mod, billsec as prodolwit, disposition as is_ok, '' as local_hour, '' as count, userfield as record, comment as comment, 'cdr' as type, dst as dest FROM cdr WHERE ( `type_zv` = 'sip_not_answered' OR `man_id` = 100 ) AND (disposition='NO ANSWER' AND `orders_id` = 1785 AND `calldate` >= '2009-06-06 12:00:33' AND calldate<='2009-07-09 12:00:12 23:59:00' AND `telephone` = 'TEST' ) ORDER BY calldate DESC LIMIT 0, 20) ORDER BY date_start DESC LIMIT 0, 20

Link to comment
Share on other sites

  • 0

с такими объемами нужно либо кэширование врубать либо при изменении данных в таблицы на insert/update/replace/delete вешать триггер на создание таблицы с этим запросом. выборка потом будет мгновенная, остается только вопрос - разрешены ли у тебя триггеры

Link to comment
Share on other sites

  • 0

возникла ещё один проблема а можно ли использовать триггеры два разных таблиц

например у меня есть таблица - А

для Б(таблиц) и В(таблиц) - я хотел использовать тригееры инсерт но там появляется такая ошибка:

/* SQL Error: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' */

Link to comment
Share on other sites

  • 0
возникла ещё один проблема а можно ли использовать триггеры два разных таблиц

например у меня есть таблица - А

для Б(таблиц) и В(таблиц) - я хотел использовать тригееры инсерт но там появляется такая ошибка:

/* SQL Error: This version of MySQL doesn't yet support 'multiple triggers with the same action time and event for one table' */

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy