powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение из БД
64 сообщений из 64, показаны все 3 страниц
Чтение из БД
    #39342215
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms

проблемы возникают при начитке ее со стороны сервера и отображения на клиенте

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
    @Override
    public List<UserActionsLogView> readPageUserActionLogView(
            UserActionsLogViewWrapper example,
            Integer first,
            Integer pageSize,
            String sortField,
            SortOrder sortOrder) {
        CriteriaBuilder qb = em.getCriteriaBuilder();
        CriteriaQuery<UserActionsLogView> query = qb.createQuery(UserActionsLogView.class);
        Root<UserActionsLogView> root = query.from(UserActionsLogView.class);
        Predicate[] restrictions = buildPredicates(example, qb, root);
        query.where(restrictions);
        query.orderBy(qb.desc(root.get(UserActionsLogView_.endTime)));
        if (sortField != null) {
            if (sortOrder.equals(SortOrder.ASCENDING)) {
                query.orderBy(qb.asc(root.get(sortField)));
            } else if (sortOrder.equals(SortOrder.DESCENDING)) {
                query.orderBy(qb.desc(root.get(sortField)));
            }
        }
        TypedQuery<UserActionsLogView> tq = em.createQuery(query);
        tq.setFirstResult(first);
        tq.setMaxResults(pageSize);
        return tq.setHint(QueryHints.READ_ONLY, HintValues.TRUE).getResultList();
//        return tq.getResultList();
    }

    private Predicate[] buildPredicates(UserActionsLogViewWrapper example, CriteriaBuilder qb, Root root) {
        ArrayList<Predicate> predicates = new ArrayList<Predicate>();

        if (example.getLogin() != null && !example.getLogin().isEmpty())
            predicates.add(qb.like(qb.upper(root.get(UserActionsLogView_.login)), "%" + example.getLogin().toUpperCase() + "%"));

        if (example.getFio() != null && !example.getFio().isEmpty())
            predicates.add(qb.like(qb.upper(root.get(UserActionsLogView_.fio)), "%" + example.getFio().toUpperCase() + "%"));

        if (example.getSessionkey() != null && !example.getSessionkey().isEmpty())
            predicates.add(qb.like(qb.upper(root.get(UserActionsLogView_.sessionkey)), "%" + example.getSessionkey().toUpperCase() + "%"));

        if (example.getStartTime() != null)
            predicates.add(qb.greaterThan(root.get(UserActionsLogView_.startTime), example.getStartTime()));

        if (example.getEndTime() != null)
            predicates.add(qb.lessThan(root.get(UserActionsLogView_.endTime), example.getEndTime()));

        return predicates.toArray(new Predicate[predicates.size()]);
    }



Что можно здесь подправить? Выполнение занимает уже секунды
...
Рейтинг: 0 / 0
Чтение из БД
    #39342239
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Что можно здесь подправить?
- проставь временные метки и будет видно где задержки
...
Рейтинг: 0 / 0
Чтение из БД
    #39342244
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-Что можно здесь подправить?
- проставь временные метки и будет видно где задержки


Бегал в debug задержка тут

return tq.setHint(QueryHints.READ_ONLY, HintValues.TRUE).getResultList();
...
Рейтинг: 0 / 0
Чтение из БД
    #39342245
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я конечно не рассчитываю как напрямую запрос выполнииться в бд по времени

Но хотелось бы немного уменьшить время
...
Рейтинг: 0 / 0
Чтение из БД
    #39342246
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
отправляемый sql можешь дать?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342329
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Что такое "начитка"? Зачем вы сравниваете значения с помощью like и %?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342364
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz Зачем вы сравниваете значения с помощью like и %?
Правильно!
Несколько лайков, абсолютно ненужных тут, сильно тормозят время выборки.
И потом может имеет смысл отказаться от сортировки?
Код: java
1.
2.
3.
...
query.orderBy(qb.desc(root.get(UserActionsLogView_.endTime)));
...



Может быть потом List<...> проще отсортировать?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342400
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms

с like и % в начале строки + order by

Не верю. Даже при индексах по времени.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342423
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms
проблемы возникают при начитке ее со стороны сервера и отображения на клиенте
Приведу аналогию - грузовик досок бригада разгрузит за 10 минут.
Если же вначале в кузове разобрать все доски на

1. хвойные или лиственные
2. по длине
3. по ширине
4. по толщие
5. чтобы не было сучков

то сколько займет времени разгрузка досок, соответствующих этим критериям?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342441
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms

с like и % в начале строки + order by

Не верю. Даже при индексах по времени.

lile и % в начале строки - а индекс в оракле используется в этом случае ?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342454
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lleming,

по строке нет

здесь наверняка по дате есть, что ТС и имеет ввиду, что выборка оптимизирована. Но выбрать 5 млн. и отсортировать. Ну не будет это меряться в ms. ИМХО
...
Рейтинг: 0 / 0
Чтение из БД
    #39342467
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezНо выбрать 5 млн.
вопрос в "выбрать куда"? Пусть выбирает с пагинацией. И тогда сортировка не проблема.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342591
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123,

пофиг куда. Из кода видно что в условии запроса некоторые поля могут опускаться. Грубо

select startTime, FIO
и
select startTime, login

для оптимальной выборки требуют аналогичных индексов. Даже без % и like.
Держать кучу индексов под различные варианты запросов просто невозможно. На инсертах затормозишь БД.

PS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился. Что-то мне кажется ТС так же оценивает скорость sql запроса
...
Рейтинг: 0 / 0
Чтение из БД
    #39342608
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezPS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился.
не видел такого ни разу. Там вроде один поток работает. Если не выполнился, то часики тикают и ГУИ замёрзшее.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342617
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezSQLDeveloper
доказать очень просто? только у PL/SQL Developer:
- взять запрос с блобами
- сузить видимую область до 3-х строк.
- запрос выполняется 15 сек.
- расширить сплиттер на 15 строк и время возрастёт.
Всё у него хорошо работает и прогеры продукта молодцы.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342660
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123sanBezPS. Уже много раз видел как кто-нибудь выполняет запрос в SQLDeveloper, видит первые 50 строк за 2ms и считает что запрос уже выполнен. И море удивления когда прокручиваешь вниз записи, опа а там тормозульки. И тут до чела доходит: то что он увидел первые строки на экране еще не гарантирует что запрос полностью выполнился.
не видел такого ни разу. Там вроде один поток работает. Если не выполнился, то часики тикают и ГУИ замёрзшее.
Например ToAD для Oracle тоже быстро выгружает 500 строк, а остальные по запросу.
Паджинация со стрелками.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342710
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz-=Koba=-,

Что такое "начитка"? Зачем вы сравниваете значения с помощью like и %?

Не совсем понял, ваш ответ. А как мне искать по условию 'Иван Ив'?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342711
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Blazkowicz Зачем вы сравниваете значения с помощью like и %?
Правильно!
Несколько лайков, абсолютно ненужных тут, сильно тормозят время выборки.
И потом может имеет смысл отказаться от сортировки?
Код: java
1.
2.
3.
...
query.orderBy(qb.desc(root.get(UserActionsLogView_.endTime)));
...



Может быть потом List<...> проще отсортировать?
Попробую передлать на локальную сортировку.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342718
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez-=Koba=-В Oracle лежит таблица логов, она оптимизирована и select по 5000000 занимаю несколько ms

с like и % в начале строки + order by

Не верю. Даже при индексах по времени.

Да немного погорячился

CriteriaBuilder формирует такой запрос
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
/* Formatted on 07/11/2016 15:32:57 (QP5 v5.300) */
SELECT *
  FROM (SELECT /*+ FIRST_ROWS */
              a.*, ROWNUM rnum
          FROM (  SELECT ID       AS a1,
                         END_TIME AS a2,
                         ERRORCODE AS a3,
                         FIO      AS a4,
                         LOGIN_NAME AS a5,
                         PARAMS   AS a6,
                         REQUEST  AS a7,
                         RESPONSE AS a8,
                         SERVICE  AS a9,
                         SESSIONKEY AS a10,
                         START_TIME AS a11
                    FROM USER_ACTIONS_LOG_VIEW
                   WHERE (    UPPER (LOGIN_NAME) LIKE '%RETAILOLD%'
                          AND UPPER (FIO) LIKE '%ТРОФИМОВИЧ%')
                ORDER BY END_TIME DESC) a
         WHERE ROWNUM <= 15)
 WHERE rnum > 0



Time 45-80 ms
Код: java
1.
select * count from USER_ACTIONS_LOG_VIEW



Результат 5004121 (выполняется чуть более секунды, только, что заметил)
...
Рейтинг: 0 / 0
Чтение из БД
    #39342723
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
USER_ACTIONS_LOG_VIEW это View join 2 таблиц
Индексы стоят на

1 таблица
sesssionKey
startTime
endTime

2 таблица
login
lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов)


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
/* Formatted on 07/11/2016 15:38:16 (QP5 v5.300) */
CREATE OR REPLACE FORCE USER_ACTIONS_LOG_VIEW
(
    ID,
    SESSIONKEY,
    LOGIN_NAME,
    FIO,
    SERVICE,
    START_TIME,
    END_TIME,
    REQUEST,
    RESPONSE,
    ERRORCODE,
    PARAMS
)
AS
    SELECT t1.ID,
           t1.SESSIONKEY,
           t2.LOGIN_NAME,
           (t2.LAST_NAME || ' ' || t2.FIRST_NAME || ' ' || t2.MIDDLE_NAME)
               AS FIO,
           t1.SERVICE,
           t1.START_TIME,
           t1.END_TIME,
           t1.REQUEST,
           t1.RESPONSE,
           t1.ERRORCODE,
           t1.PARAMS
      FROM USER_ACTIONS_LOG  t1
           LEFT OUTER JOIN USER_INFO t2 ON (t2.ID = t1.USERID);
...
Рейтинг: 0 / 0
Чтение из БД
    #39342787
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,

Я думаю ты уже сам уже понял что к джаве данный вопрос отношения не имеет.

По ораклу наверно надо определиться с порядком столбцов в первом индексе. Потому что запросы по сессии будут проскакивать быстро. А насколько часто они используются реальным юзером? Индекс-то под программиста кажется запилен :))
И не лучше ли выгадать на запросах по startTime?

и насколько нужен в
2 таблица
login
lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов)

второй столбец в индексе если наверно отношение login к lastName один к одному. Может вообще вначале вытащить логин(ы) из второй таблицы и по вьющке запрашивать условие только по полю login. Ну это так, фантазии мои...

ЗЫ
Где я че напутал по SQLDev и Toad каюсь. Грешен. Склероз
...
Рейтинг: 0 / 0
Чтение из БД
    #39342819
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez-=Koba=-,

Я думаю ты уже сам уже понял что к джаве данный вопрос отношения не имеет.

По ораклу наверно надо определиться с порядком столбцов в первом индексе. Потому что запросы по сессии будут проскакивать быстро. А насколько часто они используются реальным юзером? Индекс-то под программиста кажется запилен :))
И не лучше ли выгадать на запросах по startTime?

и насколько нужен в
2 таблица
login
lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов)

второй столбец в индексе если наверно отношение login к lastName один к одному. Может вообще вначале вытащить логин(ы) из второй таблицы и по вьющке запрашивать условие только по полю login. Ну это так, фантазии мои...

ЗЫ
Где я че напутал по SQLDev и Toad каюсь. Грешен. Склероз

Это разные индексы

1 таблица
sesssionKey - indx 1
startTime - indx 2
endTime - indx 3

2 таблица
login - indx 4
lastName (во вьешке USER_ACTIONS_LOG_VIEW FIO - это соединение трех столбцов) - indx 5
...
Рейтинг: 0 / 0
Чтение из БД
    #39342825
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы узнать, использует ли СУБД индекс - надо читать план запроса. Но это совсем не здесь.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342828
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Это разные индексы
дак что с пагинацией?
Она важнее ваших индексов на миллионах записей.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342830
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-Это разные индексы
дак что с пагинацией?
Она важнее ваших индексов на миллионах записей.
Какая польза от "пагинации" когда order by на все записи?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342834
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Blazkowicz-=Koba=-,

Что такое "начитка"? Зачем вы сравниваете значения с помощью like и %?

Не совсем понял, ваш ответ. А как мне искать по условию 'Иван Ив'?
Ну хорошо. Хотя ФИО лучше распарсить и хранить в отдельных полях,
иначе в поиск запросто попадет Шахрисиван Иванасутра.

А LOGIN_NAME тоже может быть 'User Us'?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342853
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это разные индексы
Вангую. На каждый запрос используется только один индекс в каждой таблице. Подумай насчет составного индекса для наиболее частых запросов

дак что с пагинацией?
Она важнее ваших индексов на миллионах записей.

То же мне панацея. Внутри пагинации практически те же запросы. То есть вместо одного большого тормоза получим много средненьких тормозиков )))
...
Рейтинг: 0 / 0
Чтение из БД
    #39342860
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez То же мне панацея. Внутри пагинации практически те же запросы. То есть вместо одного большого тормоза получим много средненьких тормозиков )))
Кто мешает сделать её асинхронной, точнее даже ленивой?
Ткнул следующую страницу, она и подгрузилась.
А смысл загружать 5 миллионов записей, посмотреть 1 страницу, сказать, ой, 6ля, мне совсем не то нужно и выйти из программы?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342864
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBez То есть вместо одного большого тормоза получим много средненьких тормозиков )))
Верно. Вот только не все они сработают, а только те, которые нам нужны.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342873
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так совет убрать order и перенести его на сервер?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342875
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008-=Koba=-пропущено...


Не совсем понял, ваш ответ. А как мне искать по условию 'Иван Ив'?
Ну хорошо. Хотя ФИО лучше распарсить и хранить в отдельных полях,
иначе в поиск запросто попадет Шахрисиван Иванасутра.

А LOGIN_NAME тоже может быть 'User Us'?

Логин одно слово

ФИО
Может быть

Иванов Иван
Иванчиков Иван
Иванушенко Иван

вот и идет like '%иван%'
...
Рейтинг: 0 / 0
Чтение из БД
    #39342892
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
Еще раз проблему.
Пять лимонов за сек это норм.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342924
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-,
Еще раз проблему.
Пять лимонов за сек это норм.

Проблема в том, чтоб выполнить sql который формирует CriteriaBuilder напрямую, занимает не очень много времени 40-80 ms
А если же все это сделать через сервер и вывести на клиента, то гораздо дольше, я понимаю все начитка преобразования итд, но там более 5 секунд где-то.

И второй вопрос возник почему выполнения запроса select count(*) выполняется более 1 секунды?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342947
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Проблема в том, чтоб выполнить sql который формирует CriteriaBuilder напрямую, занимает не очень много времени 40-80 ms
тебе уже говорили, чтобы ты запустил в IDE этот запрос и перешёл на последнюю запись. Сколько будет времени?
Никто не верит в твои 80ms.
Скрин давай.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342953
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
терпел, но уже ....
надо работу с данными решать средствами базы,
надо изучить sql, прежде чем браться за проект
...
Рейтинг: 0 / 0
Чтение из БД
    #39342960
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-И второй вопрос возник почему выполнения запроса select count(*) выполняется более 1 секунды?
Ответ: Потому что записей много!
...
Юмор))
SergINIВ моей жизни встретился один знакомый, который никогда не знал о Count, Sum ...
Я спросил его: а как ты вычисляешь кол-во записей в таблице?
Ответ:
delete from table;
Оракл показывает кол-во удалённых "строчек".
Rollback;
Я даже с ним спорить не стал. Мне его метод реально понравился :)
http://www.sql.ru/forum/952250-a/podschitat-kolichestvo-zapisey-v-tablice?hl=??????? ???????
...
Рейтинг: 0 / 0
Чтение из БД
    #39342961
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадянадо работу с данными решать средствами базы,
он с данными ничего не делает.
Он лог показывает).
...
Рейтинг: 0 / 0
Чтение из БД
    #39342964
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-Проблема в том, чтоб выполнить sql который формирует CriteriaBuilder напрямую, занимает не очень много времени 40-80 ms
тебе уже говорили, чтобы ты запустил в IDE этот запрос и перешёл на последнюю запись. Сколько будет времени?
Никто не верит в твои 80ms.
Скрин давай.

Какой скрин предоставить?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342967
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-И второй вопрос возник почему выполнения запроса select count(*) выполняется более 1 секунды?
Ответ: Потому что записей много!
...
Юмор))
SergINIВ моей жизни встретился один знакомый, который никогда не знал о Count, Sum ...
Я спросил его: а как ты вычисляешь кол-во записей в таблице?
Ответ:
delete from table;
Оракл показывает кол-во удалённых "строчек".
Rollback;
Я даже с ним спорить не стал. Мне его метод реально понравился :)
http://www.sql.ru/forum/952250-a/podschitat-kolichestvo-zapisey-v-tablice?hl=??????? ???????

Долго эту шутку при себе держали?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342971
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Какой скрин предоставить?
выше же написал. В ide 5 лимонов записей и время на последней записи.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342979
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-Какой скрин предоставить?
выше же написал. В ide 5 лимонов записей и время на последней записи.

Так не вернет же 5 лямов
Из-за pagination

Возвращается максимум 15 записей и 5 лямов
...
Рейтинг: 0 / 0
Чтение из БД
    #39342984
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Total 4354 получение 15 строчек по фильтру

http://itmages.ru/image/view/5155089/7eafc8af][img] http://storage4.static.itmages.ru/i/16/1107/s_1478544836_8376241_7eafc8af59.png [/img]

Total 2187 получение количество записей с фильтром

http://itmages.ru/image/view/5155090/0a7df28d][img] http://storage5.static.itmages.ru/i/16/1107/s_1478544837_6578852_0a7df28d41.png [/img]
...
Рейтинг: 0 / 0
Чтение из БД
    #39342985
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение из БД
    #39342990
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Так не вернет же 5 лямов
Из-за pagination

Возвращается максимум 15 записей и 5 лямов
Так.
Теперь и ты точно так делай у себя с пагинацией. Первая стр-ка будет за 1-2 сек на клиенте. Что нормально.
...
Рейтинг: 0 / 0
Чтение из БД
    #39342991
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123-=Koba=-Так не вернет же 5 лямов
Из-за pagination

Возвращается максимум 15 записей и 5 лямов
Так.
Теперь и ты точно так делай у себя с пагинацией. Первая стр-ка будет за 1-2 сек на клиенте. Что нормально.

Извиняюсь не совсем понял. что имели ввиду
...
Рейтинг: 0 / 0
Чтение из БД
    #39342995
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Извиняюсь не совсем понял. что имели ввиду
Ты писал про "более 5 сек.". Это с пагинацией?
Клиент готов? На чём клиент?
...
Рейтинг: 0 / 0
Чтение из БД
    #39342996
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-,
19867008
...
Рейтинг: 0 / 0
Чтение из БД
    #39342999
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Выполнение занимает уже секунды
- убрать все фильтры какие есть.
- добавить пагинацию на 30-40 записей
- проверить сколько времени без всех фильтров занимает вывод первой страницы из 30 записей.
Если 1-2 сек, то делать клиента и не забивать голову. Потом добавить фильтры.
IMHO
...
Рейтинг: 0 / 0
Чтение из БД
    #39343052
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123вадянадо работу с данными решать средствами базы,
он с данными ничего не делает.
Он лог показывает).
лог?
...
Рейтинг: 0 / 0
Чтение из БД
    #39343148
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-SQL2008пропущено...

Ну хорошо. Хотя ФИО лучше распарсить и хранить в отдельных полях,
иначе в поиск запросто попадет Шахрисиван Иванасутра.

А LOGIN_NAME тоже может быть 'User Us'?

Логин одно слово

ФИО
Может быть

Иванов Иван
Иванчиков Иван
Иванушенко Иван

вот и идет like '%иван%'
А как насчет Селиванова?
...
Рейтинг: 0 / 0
Чтение из БД
    #39343209
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
ещё раз знать нада sql, и не будет глупых вопрсов
...
Рейтинг: 0 / 0
Чтение из БД
    #39343217
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяSQL2008
ещё раз знать нада sql, и не будет глупых вопрсов
ты чё такой агрессивный сегодня? ))
вадялог?
вроде да
-=Koba=-В Oracle лежит таблица логов
...
Рейтинг: 0 / 0
Чтение из БД
    #39343237
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внесем немного лирики и философии )))

SQL2008Кто мешает сделать её асинхронной, точнее даже ленивой?
Ткнул следующую страницу, она и подгрузилась.
А смысл загружать 5 миллионов записей, посмотреть 1 страницу, сказать, ой, 6ля, мне совсем не то нужно и выйти из программы?
А смысл загружать 5 миллионов записей и сказать: О, это то что мне нужно! Щас я быстро эти 5 миллионов мышкой пролистаю и найду то что мне нужно ))))

Petro123- проверить сколько времени без всех фильтров занимает вывод первой страницы из 30 записей.
Если 1-2 сек, то делать клиента и не забивать голову. Потом добавить фильтры.

Примерно то же вопрос. Что будет делать юзер с полученными данными? Тыкать постранично пока кнопка на мышке не сломается?

У меня подобная задача в планах висит тоже с бешеным объемом данных. Точно сколько сказать не могу, но студент мой уже на out of memory налетел ))) Ну вот прилеплю я пагинацию, уйдет вылет по памяти, ну мож запрос соптимизирую, будет побыстрее чуть. И ЧООО? Какая польза от большой кучи мусора, которую хрен разгребешь руками?

И не надо писать, что дело программиста реализовать задачу, а что потом будет делать юзер - это его дело. Типа механизм есть, пусть пользуется. Не кажется мне этот ответ корректным.
Собствеенно у ТС целевая задача не поставлена. Как и у меня.

Вот у меня есть более вожные и интересные задачи, на которые времени и так не хватает. И нахрена тратить время на эту каку?
Все вышесказанное мое ИМХО.

Пока мое мнение совпадает с:
Petro123Если 1-2 сек, то делать клиента и не забивать голову.

И опять меня колбасит... пусть 50 записей на странице. 100 тыс страниц. Пестня! Мячта юзера!
...
Рейтинг: 0 / 0
Чтение из БД
    #39343246
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezТыкать постранично пока кнопка на мышке не сломается?
ты что? Гугл ни разу не видел? Или его постранично читаешь?
...
Рейтинг: 0 / 0
Чтение из БД
    #39343249
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezИ опять меня колбасит... пусть 50 записей на странице. 100 тыс страниц. Пестня! Мячта юзера!
у меня в табличке (с пагинацией) в каждой колонке есть поиск и фильтры и сортировка.
Нет проблем. Ищут что надо.
Можно сохранять найденное, но пока не просили.
...
Рейтинг: 0 / 0
Чтение из БД
    #39343279
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ меня подобная задача в планах висит тоже с бешеным объемом данных. Точно сколько сказать не могу, но студент мой уже на out of memory налетел ))) Ну вот прилеплю я пагинацию, уйдет вылет по памяти, ну мож запрос соптимизирую, будет побыстрее чуть. И ЧООО? Какая польза от большой кучи мусора, которую хрен разгребешь руками?

И не надо писать, что дело программиста реализовать задачу, а что потом будет делать юзер - это его дело. Типа механизм есть, пусть пользуется. Не кажется мне этот ответ корректным.
Собствеенно у ТС целевая задача не поставлена.
спрашивается чему учат? после прочтения мату в горле тесно. не знание так и прёт в каждом посте.
таблица логов и что какие проблемы произвети выбор в ней? какая пагинация?
клиенту надо показать не более 10 строк, если получает больше - не умеет накладывать фильтры и программист не дал такой возможности
а про like - это страшо смотреть....
без разницы фио в одном поле или в трёх, всё ищется просто. и конкретно. задача и копейки не стоит , раздули ... и out of memor приплели...
...
Рейтинг: 0 / 0
Чтение из БД
    #39343287
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
год назад уже выясняли - почему у него 5 лимонов в одном логе
Логирование
...
Рейтинг: 0 / 0
Чтение из БД
    #39343468
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяSQL2008
ещё раз знать нада sql, и не будет глупых вопрсов
Ты о чём, братишка?
Об этом?
вот и идет like '%иван%'
А как насчет Селиванова?
...
Рейтинг: 0 / 0
Чтение из БД
    #39343510
sanBez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяклиенту надо показать не более 10 строк, если получает больше - не умеет накладывать фильтры и программист не дал такой возможности
что я собстно и хотел сказать. Не нужно юзеру в данной задаче 5 млн. Ему нужны конкретные логи, по которым он может решить свою конкретную проблему.
вадякакая пагинация?

я без понятия зачем эту тему сюда вообще приплели. Не нужна она здесь.
вадяа про like - это страшо смотреть....

Где я советовал использовать like?
...
Рейтинг: 0 / 0
Чтение из БД
    #39343520
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanBezя без понятия зачем эту тему сюда вообще приплели. Не нужна она здесь.
если мы про ГУИ, то есть только 2 варианта ограничить выборку на клиента - пагинация и ленивая подгрузка. Вторую я очень редко видел в веб (сложно).
...
Рейтинг: 0 / 0
Чтение из БД
    #39343524
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ленивая = бесконечный скроллинг (напр. "ВКонтакте")
...
Рейтинг: 0 / 0
Чтение из БД
    #39343557
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
(t2.LAST_NAME || ' ' || t2.FIRST_NAME || ' ' || t2.MIDDLE_NAME)


такая комбинация маловероятно, что будет использовать индексы
поэтому лучше сделать для полного FIO отдельное поле, для ускорения поиска(в добавок полям имя , фамилия)
если идёт поиск по введенному имени /фамилии /отчеству
то
можно сделать так
FIO like '%часть%' and FIO like '%другая часть%' and FIO like '%третья часть%'
как правило достаточно трёх - четыре уже точно найдут только 1 запись
ну такой поиск организуется только ручками...
...
Рейтинг: 0 / 0
Чтение из БД
    #39343574
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
Код: sql
1.
(t2.LAST_NAME || ' ' || t2.FIRST_NAME || ' ' || t2.MIDDLE_NAME)


такая комбинация маловероятно, что будет использовать индексы
поэтому лучше сделать для полного FIO отдельное поле, для ускорения поиска(в добавок полям имя , фамилия)
если идёт поиск по введенному имени /фамилии /отчеству
то
можно сделать так
FIO like '%часть%' and FIO like '%другая часть%' and FIO like '%третья часть%'
как правило достаточно трёх - четыре уже точно найдут только 1 запись
ну такой поиск организуется только ручками...

функциональные индексы?

Код: plsql
1.
CREATE INDEX people_names ON people ((first_name || ' ' || last_name));
...
Рейтинг: 0 / 0
Чтение из БД
    #39343577
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так даже интереснее дабы было побыстрее
Код: plsql
1.
CREATE INDEX people_names ON people (upper((first_name || ' ' || last_name)));
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Чтение из БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]