Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос по индексации / 12 сообщений из 12, страница 1 из 1
19.04.2012, 14:25:42
    #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
19.04.2012, 14:27:58
    #37761058
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
Вопрос к Java никакого отношения не имеет. Вам нужно почитать как оптимизировать LIKE
А вот это полный финиш, конечно:
TO_CHAR(a.timestamp) LIKE '%2012.05.30 14:00%'
...
Рейтинг: 0 / 0
19.04.2012, 14:35:23
    #37761080
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
запостил в oracle раздел
...
Рейтинг: 0 / 0
19.04.2012, 15:16:39
    #37761207
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
BlazkowiczА вот это полный финиш, конечно:
TO_CHAR(a.timestamp) LIKE '%2012.05.30 14:00%'

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

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

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

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

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

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

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

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

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


и
Код: java
1.
TO_CHAR


можно проиндексировать?
...
Рейтинг: 0 / 0
19.04.2012, 15:39:05
    #37761299
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
Так а реально-ли сделать индекс на TO_CHAR(a.timestamp)
чтобы при запросе брались заранее подсчитанные значения TO_CHAR(a.timestamp).
Другими словами не вводить столбец TO_CHAR(a.timestamp) в таблицу где будет хранится заранее подсчитанные значения TO_CHAR(a.timestamp)?
...
Рейтинг: 0 / 0
19.04.2012, 15:41:22
    #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
19.04.2012, 15:42:15
    #37761303
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
ccoderТак а реально-ли сделать индекс на TO_CHAR(a.timestamp)
чтобы при запросе брались заранее подсчитанные значения TO_CHAR(a.timestamp).
Другими словами не вводить столбец TO_CHAR(a.timestamp) в таблицу где будет хранится заранее подсчитанные значения TO_CHAR(a.timestamp)?
По-идее можно сделать индекс на вычисляемом столбце. Но, повторюсь, вы ошиблись форумом.
...
Рейтинг: 0 / 0
19.04.2012, 15:42:52
    #37761305
ccoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
...
Рейтинг: 0 / 0
19.04.2012, 15:44:08
    #37761310
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по индексации
GKS_SamaraЗачем? DATE это момент времени. Никому и никогда он не нужен.
Нужно либо trunc(date)=..., либо date between ... and ...
В обоих случаях строкове представление в БД не нужно.

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


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