В общем, желательно, как минимум, добавить некластеризованный индекс для всех ваших внешних ключей, поскольку они, вероятно, будут часто использоваться в операциях JOIN
(а иногда и в предикатах WHERE
).
Если говорить конкретно о вашей ситуации, выбранный вами индекс содержит поле VARCHAR(MAX)
, которое будет влиять на то, как SQL Server решит его использовать. Поскольку VARCHAR(MAX)
теоретически может расти до 2 ГБ данных, движок не будет хранить полевые данные на уровне страницы, поскольку он ограничен 8 КБ. В этом случае SQL Server решил, что наименее дорогостоящей операцией является сканирование индекса (что, кстати, не всегда плохо, особенно если селективность высока).
Моя рекомендация: держите индекс жестким и ограничьте его полем UserId
, чтобы повысить производительность объединения. Мне не обязательно беспокоиться об индексе покрытия для вашего столбца Content
, так как движок должен копать глубже, чем уровень страницы для этих данных.
create nonclustered index ix_posts_userid on dbo.Posts (UserID);
Просто помните, индексы не волшебны и определенно не являются серебряной пулей для всех проблем с производительностью. Правильно спроектированные они могут повысить эффективность системы за счет затрат. Подумайте, «административный персонал в офисе», они нанимают деньги. Но верните бизнесу эффективность в отношении эффективности.
В завершение, пожалуйста, не храните теги в виде списка через запятую, что, похоже, вы делаете здесь.
blockquote>Вместо этого сохраняйте теги как общий ресурс и связывайте их через «таблицу соединений».
create table Tags ( TagId int identity primary key ,Content nvarchar(128) not null -- or whatever width suits your needs ); create table PostTags ( PostId int not null ,TagId int not null ,primary key (PostId, TagId) );
BizTalk является излишеством, если Вы просто используете его для организации сервисов WCF. Можно использовать сервисы WCF в.NET 3,5 внутренней части Windows Workflow Foundation немного более легко.
Тем не менее вот скринкаст, который должен помочь:
http://www.pluralsight.com/community/blogs/aaron/archive/2007/11/15/49172.aspx
Ниже описание того, как сделать это - я собираюсь предположить, по крайней мере, элементарные знания вещей как отображение BizTalk, сообщите мне, должны ли Вы еще детализировать, и я обновлю.
После генерации объектов в BizTalk Вы должны иметь (самое меньшее):
Файл .Binding.xml, который описывает контракт на обслуживание, выставленный сервисом WCF, и позволяет легкую конфигурацию в BizTalk
Перетащите Порт от панели инструментов на поверхность разработчика оркестровки.
Этот порт должен иметь операционные сообщения Запроса и Ответа, и они должны были быть автоматически настроены для использования сообщений для сервиса WCF. Если Ваш сервис выставит несколько операций, то Вы будете видеть, что это отразилось здесь.
Используя стандартные методы отображения BizTalk, отобразите данные, которые Вы хотите отправить службе WCF в сообщение запроса для порта WCf. (можно хотеть, чтобы изменение названия сообщения в разработчике оркестровки было чем-то лучше, чем значение по умолчанию message_1, message_2...),
Перетащите Получают и Отправляют формы на разработчика оркестровки и подключают их к правильным сообщениям Порта.
Обеспечьте электричеством остальную часть оркестровки BizTalk для взятия данных из соответствующих исходных систем (это - просто основной BizTalk, не WCF),
Разверните приложение BizTalk.
Приложение теперь готово пойти, можно развернуть его на BizTalk.
Настройте приложение BizTalk
Для портов WCF у Вас есть (по крайней мере для начала) две основных опции:
Настройте свой собственный WCF, отправляют порт.
С Вашим портом WCF, теперь созданным, можно связать порты оркестровки с ним.
После того как все это сделано, необходимо смочь запустить приложение BizTalk, и вещи должны работать.
Одна вещь, которая может помочь - ошибки, будет записана в журнал событий, они не могут быть полезными, но необходимо также смочь видеть любые сообщения об отказе мыла, возвращенные из сервиса в приостановленном представлении сообщения.
Удачи!
Это очень просто, как и разработка других служб в BizTalk. Пусть будет проще.