Я задаю этот вопрос в stackoverflow, потому что это - правильное место для выяснения...
Я знаю, что это - очень обширная тема для запуска, но некоторые маленькие, которые могут быть действительно удобными...
Для молодых разработчиков как я могло бы быть полезно знать об оптимизации запросов..
Некоторые Подсказки и Приемы об оптимизации запросов в SQL Server 2005..
На основании вопросов здесь
Например,
...WHERE tinyintcol = @intvalue
means a conversion of the column and invalidates an index
...WHERE tinyintcol = @tinyintvalue
, например,
...WHERE DATEADD(day, 1, MyCol) > GETDATE()
should be
...WHERE MyCol > DATEADD(day, -1, GETDATE())
, покрывающие индексы
GUID: не кластеризованные индексы
Самое очевидное место для начала, если у вас медленный запрос - убедиться, что он использует индекс.
(Использование ABCDE Для представления китайских иероглифов для простоты)
Допустим, вы получили «предложение» ABCDE ввод, и ваш Словарь содержит эти слова, которые начинаются с A : AB , ABC , AC , Ae , а Abb . И предполагаю, что слово CDE существует, но de , ни E не.
При расстановке входного предложения, слева направо, скрипт вытягивает первый символ A . Вместо того, чтобы запросить базу данных, чтобы увидеть, является ли A , это слово, запрашивайте базу данных, чтобы вытащить все слова, которые начинаются с A .
Структура с помощью этих результатов, захватив следующих нескольких символов из входной строки, чтобы получить правильное сравнение:
AB ?= AB : True
ABC ?= ABC: True
AC ?= AB : False
AE ?= AB : False
ABB ?= ABC: False
в данный момент программные вилки вниз по двум «настоящим» веткам. На первом, он предполагает AB - это первое слово, и пытается найти C . CDE найден, так что ветвь возможна. Вниз по другой ветви, ABC - это первое слово, но de невозможно, так что ветвь недействительна, что означает, что первая должна быть истинная интерпретация.
Я думаю, что этот метод минимизировал количество вызовов в базу данных (хотя оно может вернуть большие наборы из базы данных, так как вы получаете наборы слов, которые начинаются с одного и того же символа). Если ваша база данных была проиндексирована для такого рода поиска, я думаю, что это будет работать лучше, чем за счет письма. Глядя на весь этот процесс, а другие ответы, я думаю, что это на самом деле это структура TRIE (при условии, что символ обыскал, является корнем дерева), поскольку был предложен еще один плакат. Ну вот реализация этой идеи!
-121--3500280- Для запросов я могу добавить в GBN
, рекурсивный
и Smaclell
Последующие:
Вставьте
и Удалить
Запросы в транзакциях Обновление
- медленнее для нескольких записей, чем просто вставлять их снова. Таким образом, рекомендуется выбрать, удалить, чем программно обновлять записи и повторную вставку с существующими ключами (остерегайтесь каскада
и триггеров
)