Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстрый способ определить есть ли записи отвечающие требованиям / 10 сообщений из 10, страница 1 из 1
21.06.2009, 16:48
    #36052674
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
Привествую всех.
Какой способ самый быстрый при работе с ADO, при определении существования определенной записи?
И меньше памяти жрет?

Классический метод:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim strSQL
Dim rstTemp as New ADODB.Recordset
strSQL="SELECT COUNT(*) AS Amount FROM TblTemp WHERE FldName='ABC'"
rstTemp.Open strSQL, cnnMain, adOpenKeyset, adLockReadOnly
If rstTemp.Fields("Amount").Value= 0  Then
      MsgBox "Not exist!"
Else
      MsgBox "Exist!"
End If

Или же, лучше такой?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim strSQL
Dim rstTemp as New ADODB.Recordset
strSQL="SELECT TOP 1 * FROM TblTemp WHERE FldName='ABC'"
rstTemp.Open strSQL, cnnMain, adForwardOnly, adLockReadOnly
If rstTemp.EOF Then
      MsgBox "Not exist!"
Else
      MsgBox "Exist"
End If
...
Рейтинг: 0 / 0
21.06.2009, 18:24
    #36052707
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
...
Рейтинг: 0 / 0
21.06.2009, 20:47
    #36052762
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
Спасибо большое

И еще, тем кому эта тема интересна накопал одну страницу, по оптимизацию VB-приложения работаюшего с SQL Server'ом
Performance Tuning Tips for Creating Visual Basic Applications Using SQL Server
...
Рейтинг: 0 / 0
21.06.2009, 21:52
    #36052801
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
Другой вопрос, а для редактирования одной записи
Т.е. заведомо знаешь что в таблице записей отвечающим твоим требования всего одна
И для такого случая какой вариант курсоров использовать?
Код: plaintext
rstData.Open "SELECT TOP 1 * FROM TblTemp WHERE FldName='ABC'", cnnMain, adOpenStatic, adLockOptimistic
...
Рейтинг: 0 / 0
22.06.2009, 11:12
    #36053259
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
orunbek,

Во-первых, SELECT * — это зло.
Во-вторых, почему вы не выносите логику редактирования данных на сервер, в ХП ?
...
Рейтинг: 0 / 0
22.06.2009, 17:46
    #36054377
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
orunbekПривествую всех.
Какой способ самый быстрый при работе с ADO, при определении существования определенной записи?
И меньше памяти жрет?

Самое быстрое и не напряжное для сервера вот такое:
Код: plaintext
select 'exists' where exists (select * from FROM TblTemp WHERE FldName='ABC')
А на клиенте будет одна запись если ключ в таблице существует и пустой рекордсет если не существует.
...
Рейтинг: 0 / 0
22.06.2009, 21:18
    #36054639
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
big-dukeorunbek,

Во-первых, SELECT * — это зло.
Во-вторых, почему вы не выносите логику редактирования данных на сервер, в ХП ?
ну наверно, SELECT * от SELECT FldName не отличается по скорости обработки в случае когда количество столбцов в таблице менее 10ти. Или зависит?
То что можно вынести я уже вынес, а здесь "не выносимое" ;-)

White OwlorunbekПривествую всех.
Какой способ самый быстрый при работе с ADO, при определении существования определенной записи?
И меньше памяти жрет?

Самое быстрое и не напряжное для сервера вот такое:
Код: plaintext
select 'exists' where exists (select * from FROM TblTemp WHERE FldName='ABC')
А на клиенте будет одна запись если ключ в таблице существует и пустой рекордсет если не существует.
Код: plaintext
select 'exists' where exists (select top  1  * from FROM TblTemp WHERE FldName='ABC')
...
Рейтинг: 0 / 0
22.06.2009, 21:21
    #36054645
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
Здесь сразу тему поднимаю по поводу SELECT * и т.д.
http://sql.ru/forum/actualthread.aspx?tid=674299&pg=-1
...
Рейтинг: 0 / 0
23.06.2009, 18:19
    #36056280
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
orunbek
Код: plaintext
select 'exists' where exists (select top  1  * from FROM TblTemp WHERE FldName='ABC')
Нет. Если подзапрос делается через exists, то top 1 или замена звездочки на константу уже не нужны. Сервер сам сообразит что никаких реальных выборок в этом случае делать не нужно.
...
Рейтинг: 0 / 0
23.06.2009, 20:01
    #36056405
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Быстрый способ определить есть ли записи отвечающие требованиям
Спасибо
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Быстрый способ определить есть ли записи отвечающие требованиям / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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