Форумы HiProg.com - MS ACCESS, VBA, VB

 

Ответить на сообщение

Вернуться к теме

Вы отвечаете на сообщение:

ник: osmor
ну вот некоторое резюме.
Самый быстрый это конечно BINARY, но при этом база вырастает 2 в раза
расчет битовой маски "на лету", очень медленно
Добавление текстового поля с битовой маской дает увеличение размера бд примерно на 10%

Учитывая что значения этих полей у меня один фиг до этого формируются из других полей посимвольной обработкой (той про которую я прошлый раз спрашивал http://hiprog.com/forum/read.php?id_forum=1&id_theme=5477&page=6), то решил использовать битовую маску
Вот примерно функция

Public Function CaseToBin(strParam As String) As Variant
Dim U() As Byte
Dim L() As Byte
Dim i As Integer
Const ZERO As String = "0"
Const ONE As String = "1"
CaseToBin = String(Len(strParam), ZERO)
Dim intStep As Integer
intStep = LenB("A")
U() = UCase(strParam)
L() = strParam
For i = 0 To UBound(U) Step intStep
    If U(i) = L(i) Then Mid$(CaseToBin, i / intStep + 1, 1) = ONE
Next
End Function

А вот время ее работы с апдейтом через рекордсет 34 тыс записей (10 проходов)

CaseToBin 1 - 4085 ms
CaseToBin 2 - 3756 ms
CaseToBin 3 - 2974 ms
CaseToBin 4 - 3415 ms
CaseToBin 5 - 3715 ms
CaseToBin 6 - 4867 ms
CaseToBin 7 - 2454 ms
CaseToBin 8 - 3625 ms
CaseToBin 9 - 5748 ms
CaseToBin 10 - 4537 ms
Сумма - 39 186 ms


Ваше имя:

Пароль:

Цитировать: [quote][/quote] Код: [code][/code]
Жирный: [b][/b] Наклонный: [i][/i]
URL: [url][/url] 

Сообщение:

 Размер файла не более 50 Кбт. Большие файлы можно размещать на www.slil.ru

Прикрепить:

 

Для вставки смайлов в текст щелкните по значку.