powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос об Индексах, Рекордсетах и быстром поиске ADO
5 сообщений из 5, страница 1 из 1
Вопрос об Индексах, Рекордсетах и быстром поиске ADO
    #32128941
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть у меня таблица MainData. Есть в ней кроме всего прочего поля проиндексированные AnswerId и QuestionId. Делаю я запрос:

r1.Open("SELECT * FROM MainData WHERE AnswerID<>1", , ADODB.CursorTypeEnum.adOpenStatic,,ADODB.LockTypeEnum.adLockReadOnly, )

После этого мне нужно из оставшихся записей отобрать все записи с определенным QuestionID. Использовать метод Seek я не могу? Ведь текущий индекс я е могу установить для такого рекордсета. Буду использовать Find. Будет ли в данном случае индекс по QuestionID ускорять поиск по r1? Можно ли как-то ускорить поиск по открытому рекордсету.

Второй вопрос.
У меня есть таблица с 3 индексами. Мне в нее нужно добавить пару сотен записей. Могу ли я временно отключить индексы, добавить записи, а потом перестроить индексы?

Пользуюсь я ADO и VB.NET
...
Рейтинг: 0 / 0
Вопрос об Индексах, Рекордсетах и быстром поиске ADO
    #32129440
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На счет Find не знаю, вероятно будет. Т.к. Это тот же T-sql.
А по индексам смотри DBCC CHECKIDENT. Если нужно вставить какое то значение и нет дубляжей то поможет
Код: plaintext
1.
 SET IDENTITY_INSERT mytable ON

и далее вставляй что хочешь , потом прогониу индексы через DBCC CHECKIDENT.
...
Рейтинг: 0 / 0
Вопрос об Индексах, Рекордсетах и быстром поиске ADO
    #32130170
DennisS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хммм...
А что такое DBCC CHECKIDENT? Я не нашел ничего подобного в ADO Help...
...
Рейтинг: 0 / 0
Вопрос об Индексах, Рекордсетах и быстром поиске ADO
    #32130292
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это надо смотреть в BOL а не ADO help...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DBCC CHECKIDENT
Checks the current identity value for the specified table and, if needed, corrects the identity value.

Syntax
DBCC CHECKIDENT 
    ( 'table_name' 
        [ , { NORESEED 
                | { RESEED [ , new_reseed_value ] } 
            } 
        ] 
    )

Arguments
'table_name'

Is the name of the table for which to check the current identity value. Table names must conform to the rules for identifiers. For more information, see Using Identifiers. The table specified must contain an identity column.

NORESEED

Specifies that the current identity value should not be corrected.

RESEED

Specifies that the current identity value should be corrected.

new_reseed_value

Is the value to use in reseeding the identity column.

делаешь
Код: plaintext
1.
SET IDENTITY_INSERT mytable ON

А потом через DBCC CHECKIDENT можешь измянить их. Или ты хочешь престроить структуру индексов? Тогда просто удали и создай заново после вставки.
...
Рейтинг: 0 / 0
Вопрос об Индексах, Рекордсетах и быстром поиске ADO
    #32130296
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.те индексы, которые есть в БД - в recordset не используются

2.ускорить поиск можно через установку свойства
r1("имяполя").Properties("Optimize")=True
будет построен индекс для быстрого Find по этому полю

3.если у тебя ms-sql, зайди в дизайн таблицы, отключи индексы, включи индексы и не сохраняя изменений посмотри Change Script (в toolbar третья кнопка слева). эти команды перенеси и выполни программно через Command
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вопрос об Индексах, Рекордсетах и быстром поиске ADO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]