Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 дочернюю таблицу в xml поле  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
в таблице есть поле varchar(256) исполняющее роль битовой маски 0101
таблица большая, скорость выборки из таблицы по указанному биту низкая.

select * from t1 where substring(bitmapfield,9,1)='1'

Делать дочернюю таблицу в которой разворачивать это поле не хочется.

идея использовать XML, т.е писать в xml
для "битового" зачения 0101 соответственно
1 (2^0)
4 (2^2)

подскажите как это реализовать с помощью XML и какой тип индекса xml использовать
25 май 12, 15:26    [12616029]     Ответить | Цитировать Сообщить модератору
 Re: дочернюю таблицу в xml поле  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
Столько постов по xml, неужели никто не может подсказать реализацию ?
25 май 12, 19:20    [12617874]     Ответить | Цитировать Сообщить модератору
 Re: дочернюю таблицу в xml поле  [new]
RubinDm
Member

Откуда:
Сообщений: 461
Вы озвучили реализованный Вами подход к решению задачи, но сама задача осталась загадкой. Если Вы расскажете, что еще (кроме флагов) есть в таблице, сколько в ней записей, можно ли в принципе выносить флаги в другие таблицы, хранить их в иного вида структурах, то, возможно, мы найдем куда более красивые решения.
зы: Вы не туда копаете, строки и эксэмэлы вам тут мало помогут.
25 май 12, 22:00    [12618405]     Ответить | Цитировать Сообщить модератору
 Re: дочернюю таблицу в xml поле  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Stilet
substring(bitmapfield,9,1)='1'


... не хочется.

идея использовать XML ...
FacePalm.jpg
Поэтому никто и не отвечает.

Таблицей проще понятнее быстрее меньше занимает и легче использовать.

Но самое интересное это помесь ежа в ужём старого и нового. Олдскульное решение на масках и новомодного XML.
Кодирование масками вам не нужно. Что такое "9" - фиг поймёшь.
А так понятно, по наличию FK с таблицей свойств:
CREATE VIEW [dbo].[vwUserRight] AS
SELECT	 U.[User]
	,U.[Right]
	,R.Code	AS RightCode
FROM	          dbo.UserRight	U
	LEFT JOIN dbo.[Right]	R ON R.ID = U.[Right]
GO
SELECT [User] FROM dbo.vwUserRight WHERE RightCode = 'SuperAdmin'
-- SELECT [User] FROM dbo.vwUserRight WHERE [Right] = 1
-- SELECT [User] FROM dbo.UserRight WHERE [Right] = 1
25 май 12, 22:31    [12618462]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить