| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		wolfio Участник - экстремал
 
  Вступление в Клуб: 22.10.2012
  | 
		
			
				 Пт Июл 03, 2015 16:58   select | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Товарищи, подскажите при обращении к ibs.objects, если посмотреть план - орыкл смотрит чуть не все таблицы? Это при том, что обращаюсь по ID
 
 
 	  | Код: | 	 		  |  select * from ibs.objects where id = 77541085012  | 	  
 
 
можно ли с помощью какого-нибудь хинта получить значение быстро, не заставляя его проверять этот ID в каждой таблице? | 
			 
		  | 
	
	
		  | 
	
	
		prog Эксперт
 
  Вступление в Клуб: 03.03.2008
  | 
		
			
				 Пт Июл 03, 2015 20:18    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				1. там же INDEX UNIQUE SCAN по всем таблицам, куда же быстрее?
 
 
2. ежели вы знаете тип того id, то добавьте это условие. Например:
 
 
 	  | Код: | 	 		  | and class_id = 'ABBREVIATION' | 	 
  | 
			 
		  | 
	
	
		  | 
	
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Пн Июл 06, 2015 07:15    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | prog пишет: | 	 		  1. там же INDEX UNIQUE SCAN по всем таблицам, куда же быстрее?
 
 
2. ежели вы знаете тип того id, то добавьте это условие. Например:
 
 
 	  | Код: | 	 		  | and class_id = 'ABBREVIATION' | 	 
  | 	  
 
ежели известен class_id, смысл тогда искать в этой вьюшке?
 
 
Ах, как жаль, что идентификатор не состоит из комбинации class_id:id...
 
 	  | wolfio пишет: | 	 		  | Товарищи, подскажите при обращении к ibs.objects, если посмотреть план - орыкл смотрит чуть не все таблицы? Это при том, что обращаюсь по ID | 	  
 
Не "чуть ли не все", а именно - все.
 
Это представление состоит из запросов, объединённых по union all по всем таблицам модели данных.
 
 
 	  | wolfio пишет: | 	 		   	  | Код: | 	 		  |  select * from ibs.objects where id = 77541085012  | 	  
 
 
можно ли с помощью какого-нибудь хинта получить значение быстро, не заставляя его проверять этот ID в каждой таблице? | 	  
 
низзя.
 
При чём тут вообще хинты? в каждой из таблиц Oracle пользует самый  эффективный индекс, но проблема в том, что таблиц много - это ж union all.
 
 
А зачем нужно дёргать эту вьюшку? На моей практике в коде всегда получалось этого избежать. | 
			 
		  | 
	
	
		  | 
	
	
		wolfio Участник - экстремал
 
  Вступление в Клуб: 22.10.2012
  | 
		
			
				 Пн Июл 06, 2015 09:04    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Цитата: | 	 		  | А зачем нужно дёргать эту вьюшку? На моей практике в коде всегда получалось этого избежать. | 	  
 
исключительно в целях сопровождения. иногда получаешь ошибку в какой-нибудь операции, с IDшником, и не знаешь от чего он. | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		
			
				 Вт Июл 07, 2015 06:43    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Random пишет: | 	 		  
 
Ах, как жаль, что идентификатор не состоит из комбинации class_id:id...
 
 | 	  
 
Привет, Рандомчик...
 
в 1с-ке идентификатор составной. 
 
Только зашито 4 значения: {Документ|Справочник|...}{ВидДокумента|ВидСправочника}{N узла для репликации}{ид}...
 
это 'на всякий случай' - ежель с нуля проектировать систему кто-нить будет... | 
			 
		  | 
	
	
		  | 
	
	
		Alkov Профи
 
  Вступление в Клуб: 23.09.2010
  | 
		
			
				 Пн Июл 20, 2015 03:14    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				| А там id разве не строковый ? | 
			 
		  | 
	
	
		  | 
	
	
		Damir Участник - экстремал
 
  Вступление в Клуб: 29.03.2013
  | 
		 | 
	
	
		  | 
	
	
		Alkov Профи
 
  Вступление в Клуб: 23.09.2010
  | 
		
			
				 Ср Июл 22, 2015 11:02    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				Да не я к тому , что может явно надо было строку искать, с апострофами
 
 select * from ibs.objects where id = '77541085012'  ? | 
			 
		  | 
	
	
		  | 
	
	
		Random Эксперт
 
  Вступление в Клуб: 27.06.2011
  | 
		
			
				 Чт Июл 23, 2015 07:21    | 
				     | 
			 
			
				Полезность: Нет оценки 
  | 
			 
			
				 	  | Alkov пишет: | 	 		  Да не я к тому , что может явно надо было строку искать, с апострофами
 
 select * from ibs.objects where id = '77541085012'  ? | 	  
 
 
objects - прекрасное представление. Прекрасное в том смысле, что бесподобно иллюстрирует, к чему приводит бездумное увлечение union all.
 
 
Я его иногда для этого использую.
 
 
Что касается кавычек - не думаю, что они тут уместны, и вот почему:
 
 	  | Код: | 	 		  | select * from user_tab_cols where table_name = 'OBJECTS' | 	  
 
TABLE_NAME...COLUMN_NAME...DATA_TYPE
 
OBJECTS..........ID.......................NUMBER
 
OBJECTS..........CLASS_ID...........VARCHAR2 | 
			 
		  | 
	
	
		  | 
	
	
		 |