Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
Как внести изменения в таблицу All_Indexes, например мне необходимо проапдейтить поле GLOBAL_STATS с NO на YES? Или может возможно это всё задавать на этапе создания индекса?
9 мар 17, 16:50    [20278494]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
julat21,

1. Это не таблица, а вьюха.
2. Ты хочешь не радактирование индекса, а изменение метаданных.

Можешь глянуть в определении вьюхи как получается значение этого поля и соотвественно повлиять на него либо сбором статистики либо dbms_stats.set_index_stats.

Только лучше озвучивать зачем тебе это надо, а то желание что-то задавить без объяснения причин выглядит несколько странно.
9 мар 17, 17:02    [20278577]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
dbms_photoshop
Member

Откуда: sqlmdx.net
Сообщений: 5151
dbms_photoshop
желание что-то задавить
Не так прочитал.
9 мар 17, 17:05    [20278603]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
dbms_photoshop,
Есть два проекта, одинаковые индексы там и там. В первом работает всё стабильно, во втором глючит. План запроса показывает, что не подхватываются индексы, потому выборка идет очень долго. Потому и думаю изменить этот параметр, чтоб посмотреть на результат.
9 мар 17, 17:12    [20278650]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
dbms_photoshop,Я конечно может не правильно интерпретирую, параметр global_stats стоит NO и даже если я соберу статистику по индексу он не сработает при выборке по полю в условии WHERE.
9 мар 17, 17:18    [20278697]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
ora601
Member

Откуда:
Сообщений: 750
julat21,

смотри чего захотел)

У тебя наверное что то банальное там, типа отсутствия статистики или еще что попроще, а ты хочешь править метаданные.
9 мар 17, 17:22    [20278726]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601,
Индекс срабатывает при таком запросе
select c.id_table1 from client c, client_bask cb where c.id_table1 = cd.id_table2

Если не брать выбор поля, то идет скан по всей таблице, хотя в другой базе, точно такая табличка по 50 миллионов записей в табличках и запрос отрабатывает за 0.016 секунды.
9 мар 17, 17:32    [20278789]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
julat21,исправил, опечатка
select c.id_table1 from client c, client_bask cb where c.id_table1 = cb.id_table2
9 мар 17, 17:34    [20278793]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601, что значит нет статистики?
9 мар 17, 17:36    [20278802]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
julat21
ora601, что значит нет статистики?

oracle index statistics gather
9 мар 17, 17:45    [20278842]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601,
SELECT * FROM client c, client_sub css WHERE c.client_id = css.client_id

В обоих табличках созданы индексы по полю client_id, но в первом случае (база где Global_stats в YES ) план запроса идеальный и запрос 0.2 секунды. (база где Global_stats в NO), идет полный FULL по табличкам и запрос отрабатывает как повезет.
9 мар 17, 17:46    [20278849]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
... хотя правильнее начать с
oracle table statistics gather
... поскольку статистика по индексам, как правило, вещь сопутствующая, интегрированная..
9 мар 17, 17:49    [20278867]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
Viewer,
Если бы мне помог гугл, сюда не обращался.
9 мар 17, 17:51    [20278884]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
ora601
Member

Откуда:
Сообщений: 750
julat21,

/*+gather_plan_statistics*/ на втором запросе что дает?
9 мар 17, 17:58    [20278911]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
как вы там с гуглом общаетесь, отсюда не видно, но целенаправленное направление поиска ещё никому не помешало...
P.S.
как с этим
select last_analyzed
from all_tables
where table_name = 'TABLE_NAME'

сравните хотя бы это для обоих случаев.
9 мар 17, 17:59    [20278924]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601,
Если Вы это имеете ввиду
SELECT  * /*+gather_plan_statistics*/  FROM client c, client_sub css WHERE c.client_id = css.client_id


К сообщению приложен файл. Размер - 11Kb
9 мар 17, 18:04    [20278940]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
Viewer, сравнил. В первом случае где всё хорошо 12.12.2016, во второй где плохо 02.01.2017. Только что это дает знание дат?
9 мар 17, 18:08    [20278953]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
ora601
Member

Откуда:
Сообщений: 750
julat21,

Нет,

+
SELECT /*+ GATHER_PLAN_STATISTICS */ *
FROM   emp e, dept d
WHERE  e.deptno = d.deptno
AND    e.ename  = 'SMITH';

SELECT * 
FROM   TABLE(DBMS_XPLAN.DISPLAY_CURSOR(format => 'ALLSTATS LAST'));

9 мар 17, 18:09    [20278960]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
julat21,

SELECT * /*+ gather_plan_statistics */

https://docs.oracle.com/cd/B12037_01/server.101/b10752/hintsref.htm
The following syntax shows hints contained in both styles of comments that Oracle supports within a statement block.

{DELETE|INSERT|MERGE|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */

or

{DELETE|INSERT|MERGE|SELECT|UPDATE} --+ hint [text] [hint[text]]...
9 мар 17, 18:09    [20278963]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601,

Когда второе условие в where, то индексы подхватываются, но суть запроса, чтоб объединить по одному полю две таблицы и выбрать только совпадение. Вот первая идеально это делает, хотя запрос такой же
SELECT * FROM client c, client_sub css WHERE c.client_id = css.client_id


К сообщению приложен файл. Размер - 13Kb
9 мар 17, 18:17    [20278993]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
ora601,
Кстати, ORACLE 10 версии.
9 мар 17, 18:19    [20279005]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
julat21
ora601,
Кстати, ORACLE 10 версии.

.... кстати, после цифры 10 идут ещё, весьма важные цифирьки...
9 мар 17, 18:21    [20279017]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
Viewer, Oracle Database 10g Enterprise Edition Release 10.1.0.3.0 - Prod
и там и там.
9 мар 17, 18:27    [20279039]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
Viewer
Member

Откуда: Самара
Сообщений: 5369
julat21
Viewer, сравнил. В первом случае где всё хорошо 12.12.2016, во второй где плохо 02.01.2017. Только что это дает знание дат?

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

... данные то в каждом случае, идентенчны, хотя бы количественно?

P.S.
имел счастье встретиться с ситуацией, когда появление очередной месячной порции данных, увеличило время расчёта, по сравнению с предыдущим месяцем, с 40 минут до 9 часов...
9 мар 17, 18:33    [20279060]     Ответить | Цитировать Сообщить модератору
 Re: Редактирование индекса?  [new]
julat21
Member

Откуда:
Сообщений: 48
Viewer,

Та даже суть не в этом. Я тестово создал две таблички по несколько записей туда кинул. Делаю запрос, не берет индекс. На второй базе уже созданы таблички, тоже оставил по несколько записей, блин а там берет индекс точно такой запрос. Потому я пошел и искать разницу в all_indexs, при создании индексов разница только в одном поле GLOBAL_STATS, там NO(для новой таблички и нового индекса), а там YES(старая табличка).
9 мар 17, 18:42    [20279086]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить