У меня есть проблема, которую я не могу обойти, как бы я ни старался.
Эта компания работает в области анализа рынка и имеет довольно большие таблицы (строки 300K - 1M) и МНОГО столбцов (подумайте250-300), по которым мы делаем некоторые расчеты.
Я попытаюсь прямо перейти к проблеме:
Проблема заключается в фильтрации данных.Все базы данных, которые я пробовал до сих пор, слишком медленны, чтобы выбирать данные и возвращать их.
В настоящий момент я сохраняю всю таблицу в памяти и выполняю фильтрацию с использованием динамического LINQ.
Однако,хотя это довольно быстро (около 100 мс для фильтрации 250 000 строк), мне нужны лучшие результаты, чем эта ...
Есть ли способ изменить что-то в моем коде (не модель данных), что может ускоритьфильтрация вверх?
Я пытался использовать:
DataTable. Выберите, что медленно.Динамический LINQ, который лучше, но все еще слишком медленный.Обычный LINQ (только для целей тестирования), который почти достаточно хорош.Извлечение из MySQL и последующая обработка - медленная.
В начале этого проекта мы думали, что какая-то высокопроизводительная база данных сможет справиться с этим, но я попытался:
H2 (IKVM) HSQLDB (скомпилированный ODBC-драйвер) CubeSQL MySQL SQL SQLite ...
И все они очень медленно взаимодействуют с .NET и получают результаты.
Iтакже пытался разбить данные на куски и объединить их позже во время выполнения, чтобы уменьшить общий объем данных, которые необходимо отфильтровать.
Есть ли какой-нибудь способ в этой вселенной, который я могу сделать так быстрее?
Заранее спасибо!
ОБНОВЛЕНИЕ
Я просто хочу добавить, что я не создал эту базу данных.
Чтобы добавить некоторые цифры,если я сделаю простой выбор из 2 полей в окне запроса к базе данных (SQLyog), например, так: (имя_символа проиндексировано):
SELECT key1, key2 FROM table1 WHERE filter1 = filterValue1
Это займет 125 миллисекунд на 225639 строках.
Почему это так медленно?Я проверил 2 разные коробки.
Конечно, они должны изменить что-то, очевидно?