The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"оптимизация like зароса,как уменьшить время обработки запрос..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"оптимизация like зароса,как уменьшить время обработки запрос..."  
Сообщение от NEO (ok) on 08-Авг-07, 12:22 
Добрый день. Есть таблица с таким содержанием.
Надо выбрать суммарное количество  traffic_cur за целый час.
Делаю так:SELECT sum(`traffic_cur`) AS `TR_AMOUNT` FROM `userdata` WHERE `user` = 'arthur' AND `date` LIKE '2008-01-01 $hour%';hour = 01 например.
Подскажите,как изменить сей запрос,чтоб на нее тратилось меньше времени,учитывая что база большая.
+---------------------+--------+-------------+
| date                | user   | traffic_cur |
+---------------------+--------+-------------+
| 2008-01-01 00:00:00 | adm    |         390 |
| 2008-01-01 00:00:00 | adm    |         873 |
| 2008-01-01 00:00:00 | arthur |         390 |
| 2008-01-01 00:00:00 | tumy   |         390 |
| 2008-01-01 00:00:01 | adm    |         564 |
| 2008-01-01 00:00:01 | arthur |         564 |
| 2008-01-01 00:00:01 | tumy   |         564 |
| 2008-01-01 00:00:02 | adm    |         125 |
| 2008-01-01 00:00:02 | arthur |         125 |
| 2008-01-01 00:00:02 | tumy   |         125 |
| 2008-01-01 00:00:03 | adm    |         379 |
| 2008-01-01 00:00:03 | arthur |         379 |
| 2008-01-01 00:00:03 | tumy   |         379 |
| 2008-01-01 00:00:04 | adm    |         668 |
| 2008-01-01 00:00:04 | arthur |         668 |
| 2008-01-01 00:00:04 | tumy   |         668 |
| 2008-01-01 00:00:05 | adm    |         318 |
| 2008-01-01 00:00:05 | arthur |         318 |
| 2008-01-01 00:00:05 | tumy   |         318 |
| 2008-01-01 00:00:06 | adm    |         778 |
| 2008-01-01 00:00:06 | arthur |         778 |
| 2008-01-01 00:00:06 | tumy   |         778 |
| 2008-01-01 00:00:07 | adm    |         180 |
| 2008-01-01 00:00:07 | arthur |         180 |
| 2008-01-01 00:00:07 | tumy   |         180 |
| 2008-01-01 00:00:08 | adm    |         124 |
| 2008-01-01 00:00:08 | arthur |         124 |
| 2008-01-01 00:00:08 | tumy   |         124 |
| 2008-01-01 00:00:09 | adm    |         286 |
| 2008-01-01 00:00:09 | arthur |         286 |
+---------------------+--------+-------------+
Таблица создавалась следующим образом:
CREATE TABLE IF NOT EXISTS `userdata` (
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `ip_addr` varchar(15) NOT NULL,
  `user` char(8) NOT NULL default 'unknown',
  `traffic_cur` int(15) unsigned NOT NULL default '0',
  KEY `date` (`date`),
  KEY `user` (`user`),
  KEY `traffic_cur` (`user`),
  KEY `tr_us_dt` (`date`,`user`,`traffic_cur`)    
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Заранее благодарен!
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "оптимизация like зароса,как уменьшить время обработки запрос..."  
Сообщение от Romik (??) on 08-Авг-07, 13:01 
Воспользуйтесь функциями работы с датой и временем MySQL'а. Вы сможете вообще избавиться от LIKE.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "оптимизация like зароса,как уменьшить время обработки запрос..."  
Сообщение от NEO (ok) on 08-Авг-07, 13:18 
>Воспользуйтесь функциями работы с датой и временем MySQL'а. Вы сможете вообще избавиться
>от LIKE.

Прошу прощения,можно примерчик?
Благодарю!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "оптимизация like зароса,как уменьшить время обработки запрос..."  
Сообщение от StSphinx (??) on 08-Авг-07, 13:40 
>>Воспользуйтесь функциями работы с датой и временем MySQL'а. Вы сможете вообще избавиться
>>от LIKE.
>
>Прошу прощения,можно примерчик?
>Благодарю!

Там их вагон и маленькая тележка(функций). Вот примерчик:
select customer_id, group_id, account_id, service_id, activity_date, reckoning_date, \
     tariff_id from services where reckoning_date < date_sub(now(),interval 1 day) and \
     (group_id = 3 or group_id = 9 or group_id = 8)  and status > -20 and type_id = 1;
А вообще вам сюда:
http://dev.mysql.com/doc/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "оптимизация like зароса,как уменьшить время обработки запрос..."  
Сообщение от Григорий email(??) on 10-Авг-07, 11:53 
>Добрый день. Есть таблица с таким содержанием.
>Надо выбрать суммарное количество  traffic_cur за целый час.
>Делаю так:SELECT sum(`traffic_cur`) AS `TR_AMOUNT` FROM `userdata` WHERE `user` = 'arthur' AND
>`date` LIKE '2008-01-01 $hour%';hour = 01 например.
>Подскажите,как изменить сей запрос,чтоб на нее тратилось меньше времени,учитывая что база большая.

SELECT sum(`traffic_cur`) AS `TR_AMOUNT`
   FROM `userdata`
   WHERE
      `user` = 'arthur' AND
      `date` >= '2008-01-01 $hour%' AND
      `date` < DATE_ADD('2008-01-01 $hour%', INTERVAL 1 HOUR);

>[оверквотинг удален]
>  `date` datetime NOT NULL default '0000-00-00 00:00:00',
>  `ip_addr` varchar(15) NOT NULL,
>  `user` char(8) NOT NULL default 'unknown',
>  `traffic_cur` int(15) unsigned NOT NULL default '0',
>  KEY `date` (`date`),
>  KEY `user` (`user`),
>  KEY `traffic_cur` (`user`),
>  KEY `tr_us_dt` (`date`,`user`,`traffic_cur`)
>) ENGINE=MyISAM DEFAULT CHARSET=latin1;
>Заранее благодарен!

Хранить адреса в виде строк не эффективно:
  `ip_addr` varchar(15) NOT NULL,
лучше использовать:
  `ip_addr` INTEGER NOT NULL,

При вставке в таблицу использовать встроенную функцию INET_ATON
mysql> SELECT INET_ATON('209.207.224.40');
        -> 3520061480
А в конечных запросах использовать встроенную функцию INET_NTOA
mysql> SELECT INET_NTOA(3520061480);
        -> '209.207.224.40'
Хотя это как кому нравится.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру