powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по индексации
12 сообщений из 12, страница 1 из 1
Вопрос по индексации
    #37761054
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть код поиска
Дата может быть введена не полной, например 12 день либо 12:00. И имя с фамилией вводятся в одной ячейке и "могут вводится абы как" (для удобства пользователя всё)
Код: java
1.
2.
3.
4.
5.
		sessionFactory.getCurrentSession().createQuery(
				"FROM Visit a "+		    
				"WHERE lower(a.specialist.name||' '||a.specialist.surname) LIKE lower('%namE3% %surname3%') "+
				"AND TO_CHAR(a.timestamp) LIKE '%2012.05.30 14:00%'").
			    list();


он рабочий, всё хорошо показывает, только боюсь что при большой базе дынных будет тормозить.
Думаю что это можно улучшить при помощи индексации, только не знаю как точно
Можете ктонибудь объяснить как это дело делается
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761058
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос к Java никакого отношения не имеет. Вам нужно почитать как оптимизировать LIKE
А вот это полный финиш, конечно:
TO_CHAR(a.timestamp) LIKE '%2012.05.30 14:00%'
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761080
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запостил в oracle раздел
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761207
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА вот это полный финиш, конечно:
TO_CHAR(a.timestamp) LIKE '%2012.05.30 14:00%'

:):):) показал DBA - у него глаз заморгал, до сих пор кстати моргает:)
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761235
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, ccoder!

> Дата может быть введена не полной, например 12 день либо 12:00. И имя с
> фамилией вводятся в одной ячейке и "могут вводится абы как" (для
> удобства пользователя всё)

Пользователю пофиг, как всё это лежит в БД. За попытку залезть туда
копытами надо их на мясо пускать. Поэтому, если не хотите огребать
постоянно чудовищных проблем, срочно меняйте структуру данных.

Дату хранить надо в Date (либо если очень хочется- long в
миллисекундах), ФИО - в трёх полях (Фамилия, Имя, остальной мусор).
А то потом реально попадёте с каким-нибудь "Кургы Оглы Иван Васильевич".

Вот попросят вас вывести в отчёте "Фамилию и инициалы"- будет плакать,
но будет уже поздно.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761238
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, забыл ник!

> :):):) показал DBA - у него глаз заморгал, до сих пор кстати моргает:)

Добрый души человек, раз не убил.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761242
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А
Код: java
1.
a.specialist.name||' '||a.specialist.surname


и
Код: java
1.
TO_CHAR


можно проиндексировать?
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761299
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так а реально-ли сделать индекс на TO_CHAR(a.timestamp)
чтобы при запросе брались заранее подсчитанные значения TO_CHAR(a.timestamp).
Другими словами не вводить столбец TO_CHAR(a.timestamp) в таблицу где будет хранится заранее подсчитанные значения TO_CHAR(a.timestamp)?
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761301
GKS_Samara
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, ccoder!

> Так а реально-ли сделать индекс на TO_CHAR(a.timestamp)
> чтобы при запросе брались заранее подсчитанные значения
> TO_CHAR(a.timestamp).

Зачем? DATE это момент времени. Никому и никогда он не нужен.
Нужно либо trunc(date)=..., либо date between ... and ...
В обоих случаях строкове представление в БД не нужно.

--
Алексей
JID: alxt@ya.ru
Posted
via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761303
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ccoderТак а реально-ли сделать индекс на TO_CHAR(a.timestamp)
чтобы при запросе брались заранее подсчитанные значения TO_CHAR(a.timestamp).
Другими словами не вводить столбец TO_CHAR(a.timestamp) в таблицу где будет хранится заранее подсчитанные значения TO_CHAR(a.timestamp)?
По-идее можно сделать индекс на вычисляемом столбце. Но, повторюсь, вы ошиблись форумом.
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761305
ccoder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вопрос по индексации
    #37761310
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GKS_SamaraЗачем? DATE это момент времени. Никому и никогда он не нужен.
Нужно либо trunc(date)=..., либо date between ... and ...
В обоих случаях строкове представление в БД не нужно.

+1
Нужно ввод пользователя сконвертировать во внятное условие на SQL для типа Date.
А не пытаться текст натянуть на LIKE и формат даты.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по индексации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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