SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.12.2016 15:23:14

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Как короче подсчитать записи в базе?

есть база данных ха несколько лет, и она постоянно растет. Необходимо подсчитать количество записей за месяц по полю дата.(a_date_begin) и вывести в идиной таблице за все время работы.

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

SELECT COUNT(*) FROM `parse` WHERE str_to_date(a_date_begin , '%d.%m.%Y' ) > LAST_DAY( DATE_SUB( CURDATE( ) , INTERVAL 3 MONTH ) ) AND str_to_date( a_date_begin, '%d.%m.%Y' ) < DATE_ADD( LAST_DAY( CURDATE( ) - INTERVAL 2 MONTH ) , INTERVAL 1 DAY )



Это собственно запрос, которым я сейчас считаю месяц.  Если-ли какой-то вариант более разумный?

Неактивен

 

#2 28.12.2016 15:46:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как короче подсчитать записи в базе?

Какая у Вас версия mysql? Тут виртуальная колонка напрашивается, которая будет месяц содержать.
Какие еще варианты - можно хранить время в timestamp и выбирать по индексу по этому полю - вполне получится.
Можно просто денормализовать, то есть завести поле "месяц" и его индексировать. Но это вариант уже так себе, вдруг вы за день захотите посчитать.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 28.12.2016 16:25:09

kaiseri
Завсегдатай
Зарегистрирован: 26.09.2016
Сообщений: 26

Re: Как короче подсчитать записи в базе?

тип сервера: MariaDB
Версия сервера: 5.5.50-MariaDB - MariaDB Server


а по timestamp будет быстрее считать, чем по текстовому полю, если они оба индексы?

Отредактированно kaiseri (28.12.2016 16:26:38)

Неактивен

 

#4 28.12.2016 17:09:45

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Как короче подсчитать записи в базе?

Посмотрите
https://mariadb.com/kb/en/mariadb/virtu … d-columns/
Ну или смотрите в сторону использования timestamp.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson