Как перебрать таблицу mysql всего один раз в jdbc для построения карты подсчета? - PullRequest
0 голосов
/ 31 октября 2018

У меня есть таблица mysql со столбцом с именем state. Каждая строка может иметь различное состояние s1, s2 или s3.

Задача - построить карту состояний событий. Один из способов сделать это - создать следующие строки запроса:

select count(*) from NameOfTable where NameOfTable.state = "s1";

select count(*) from NameOfTable where NameOfTable.state = "s2";

select count(*) from NameOfTable where NameOfTable.state = "s3";

Тогда выполните их.

Но этот подход повторяется по всей таблице 3 раза. Есть ли способ делать это, просто перебирая всю таблицу один раз в jdbc?

1 Ответ

0 голосов
/ 31 октября 2018

Этот запрос выполняется по таблице только один раз и выдает все три значения.

select
    sum(case when state = 's1' then 1 end) as c1,
    sum(case when state = 's2' then 1 end) as c2,
    sum(case when state = 's3' then 1 end) as c3
  from NameOfTable

Однако, почему вы хотите пройти через стол только один раз? Скорость, потребление ресурсов, ввод-вывод? Ваше ограничение кажется довольно искусственным.

Альтернативное решение, данное @Loc, выполняет три запроса и может быть быстрее, чем этот (полное сканирование таблицы), если таблица имеет индексы.

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