powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что делать с большими таблицами???
18 сообщений из 18, страница 1 из 1
Что делать с большими таблицами???
    #32788263
alex3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем времени суток!
У меня есть таблицы 100тыс., 50тыс., 28тыс., причем это все справочники, т.е юзер должен из них выбирать, значит они должны быть доступны после загрузки формы. Так вот DataAdapter.Fill по этим таблицам идет о-очень долго, порядка 10-15мин. Что делать??? Может кто сталкивался, подскажите.
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32788340
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то делал подобное. В поле юзер начинает колотить что ему надо, и как только он вбивает третий символ открывается справочник с запросом like...

моим юзерам понравилось
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32788723
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex3399Доброго всем времени суток!
У меня есть таблицы 100тыс., 50тыс., 28тыс., причем это все справочники, т.е юзер должен из них выбирать, значит они должны быть доступны после загрузки формы. Так вот DataAdapter.Fill по этим таблицам идет о-очень долго, порядка 10-15мин. Что делать??? Может кто сталкивался, подскажите.
не думаю, что лузеру нужно видеть все 100тыс. строк, что б выбрать только одну...
можна список ограничивать либо обязательным условием(where) либо/и орагнизовывать постраничное отображение (как в инете)
почитать об этом можна здесь
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32789526
Hummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо организоваваем вывод формы для выбора, которая берёт первые N записей из справочника и имеет текстовое поле с вводом - дальше происходит запрос с лайком - практически так, как написал Дудкин.
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32789777
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HummerЛибо организоваваем вывод формы для выбора, которая берёт первые N записей из справочника и имеет текстовое поле с вводом - дальше происходит запрос с лайком - практически так, как написал Дудкин.
ну так это тоже самое, что и предлагалось - выводить не все а некоторую часть с возможностю просмотреть следующие n строк
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32790349
alex3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем я так думал сделать, но это хорошо пока не нужно делать сортировки. Скажем есть справочник материалов, сортируем его по наименованию или коду ОКП. Для поиска по первым символам подходит LIKE, но тогда как определить, с учетом сортировки, какая запись находится перед первой для того чтобы можно было осуществлять навигацию? Можно конечно создать несколько вьюшек с нужными сортировками и переключаться между ними по необходимости. Но как-то все это нагоняет тоску... Может поискать другую среду для реализации этой задачи?
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32790699
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, мне как пользователю, тоже стало бы грустно, если бы я не увидел все 100 тыс записей из всего справочника, запуская его. Или, 50 тыс. вводя в поиск первые два-три символа одного значения .
Идея совсем глупая, и не звучала в этом топике ниразу - сделай максимальное количество полей для выборки по запросу и заставь пользователя заполнять их (а потом кнопочку с выполнением запроса). Может по запросу нибудет ни одной строки??? Или всего, например, пять...
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32790775
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может поискать другую среду для реализации этой задачи?

В любой среде показывать 100 тысяч записей клиенту - плохо. Поддерживаю вариант с максимально точным поиском

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32790844
HitchHicker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понял, что данные нужно извлечь только для чтения.
Поэтому используй DataReader, который быстрее в ХХ раз.


Код: plaintext
1.
2.
Do while myreader.read 
' чтение
loop
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32795125
alex3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем.
Пришлось все-таки писать страничную обработку(.
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32795176
Дудкин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично мне бы, если я был бы юзером, было бы лениво перелистывая странички искать нужную запись. Но это имхо...
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32795234
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что объективными причинами, по которым автор отказался от выполнения точного запроса может быть сложность с его написанием. По этому привожу пример (уточню - это всего лишь пример, то есть возможный вариант, а не руководство к действию ):
Код: 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.
29.
30.
31.
32.
33.
34.
35.
    Private Sub Search_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Search.Click

        Dim a As String = search1.Text
        Dim b As String = search2.Text
        Dim c As String = search3.Text
        Dim d As String = search4.Text

        If a = "" And b = "" And c = "" And d = "" Then
        
        '************************
        'как вариант, более подходящий к топику
        'If a = "" Or b = "" Or c = "" Or d = "" Then
        'MsgBox("Fill all search text box")
        '************************
         
            MsgBox("Insert Criteria")
            Exit Sub
        Else
            If a <> "" Then a = " AND (osnova_table.col1 LIKE '" & search1.Text & "%')"
            If b <> "" Then b = " AND (osnova_table.col2 LIKE '" & search2.Text & "%')"
            If c <> "" Then c = " AND (osnova_table.col3 = '" & search3.Text & "')"
            If d <> "" Then d = " AND (osnova_table.col4 = '" & search4.Text & "')"

            Dim allunit As String = a & b & c & d
            If allunit.StartsWith(" AND") Then allunit = allunit.Remove( 0 ,  4 )

            OleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM osnova_table WHERE " & allunit

        DataSet1.Clear()
        OleDbDataAdapter1.Fill(DataSet1.osnova_table)
        DataGrid1.CaptionText = "Search Table Count - " & DataSet1.osnova_table.Count

        End If

    End Sub

P.S. Извините, если что не так - просто поумничать захотелось
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32795438
Алексей Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще предложу такой вариант выборки.
Т.к. для большущего справочника это наверное актуально

и если искать только по начальным буквам то легко можно не найти нужную запись и ввести повторную, со всеми вытекающими последствиями...

Создать специализированную форму для поиска по приближенному написанию,
которая учитывала бы ошибки ввода.
(пропуск букв, лишние буквы, перестановка, похожие анг-рус, ноль вместо буквы о, похожее звучание, неударные гласные и тд.)

Например вводим для поиска трест

Выводится примерно такой список

ООО третс "Дорожник"
Трест "Дружба"


Ищем Иванов

Получаем
Ифанов
Иваноф
Ианов
и т.д.
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32796095
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле, я сталкивался с такими таблицами (ну, может поменьше), и вместо текстовых боксов ставил комбо (без вылетающего списка (DropDownStyle=Simple - внешне похож будет на текст бокс) + автоподстановка). К чему это я ... а, вспомнил, набивал я его значениями из столбца таблицы ридером - довольно живо получалось - так вот по первым символам введённым пользователем срабатывала автоподстановка и становилось видно - есть такое значение в таблице или смысл забивать его в критерий поиска напрочь отсутствует... Но, это моё имхо...
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32801212
alex3399
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я хочу немного пояснить: это справочник Материалов, он достался в наследство от старой системы, практически никак не структурирован, там есть код, наименование, и код ОКП. По сути это просто большой набор г..., но для совместимости он нужен.
У меня есть такой класс универсальный, для работы с любыми справочниками, даешь ему тайблстайл, датасет и всякие мелочи, а он умеет искать по любой колонке и возвращает то что выбрал юзер, вот мне и хотелось сохранить универсальность, но ...
А спрашивал я в надежде на то, что может у датаадатера или еще где-то есть что-то вроде подкачки данных по мере надобности, ведь тот же интерпрайз менеджер у SQL таблицу подкачивает по мере ее пролистывания.
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32801246
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А спрашивал я в надежде на то, что может у датаадатера или еще где-то есть что-то вроде подкачки данных по мере надобности, ведь тот же интерпрайз менеджер у SQL таблицу подкачивает по мере ее пролистывания.


К сожалению, а может и к счастью DataAdapter не умеет реализовывать правильно постраничную выборку.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32801329
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мелкософт идет в сторону так называемого толстого клиента, что в переводе означает держать все данные на клиенте не держа постоянного соединения с БД (чего требовалось для старенького ADO)
...
Рейтинг: 0 / 0
Что делать с большими таблицами???
    #32801403
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артёммелкософт идет в сторону так называемого толстого клиента, что в переводе означает держать все данные на клиенте не держа постоянного соединения с БД (чего требовалось для старенького ADO) строго говоря и в "стареньком ADO" никто не запрещал создавать отсоединеные рекордсеты.
Насчет куда идет microsoft - тоже спорный вопрос.

По subj - я поддерживаю вариант с поиском по (например) like. Хоть это и создает большое количество round trip-ов на сервер, зато относительно легко реализуемо и надежно работает. А общий объем перетягиваемых по сети данных может быть и меньше, чем при постраничной выборке.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Что делать с большими таблицами???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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