Я работаю над презентацией исследовательской работы для класса Базы данных.Я просматриваю статью под названием «Распределенное выполнение запросов к пространственному SQL», написанную: Константиносом Джанноусисом, Константиной Беретай, Николаосом Каралисом и Манолисом Кубаракиссом, кафедра информатики и телекоммуникаций Национального и Каподистрийского университетов Афин, Афины, Греция
Рассматривая результаты тестирования STARK против Exareme на рисунке 1, в документе отмечается, что использование «живой индексации» лучше всего работает с «небольшими наборами данных».Однако, во всех других исследованиях, которые я проводил, чтобы понять живую индексацию и ее применение, кажется, что она всегда будет работать хуже, чем постоянная индексация, особенно для небольших наборов данных.Например:
«Живой индекс, отличный от ожидаемого, не приносит никакой выгоды и почти всегда медленнее по сравнению с отсутствием использования индекса.Поскольку селективность достаточно высока (в каждой операции меньше 5 кортежей результатов), причина этого, вероятно, в небольшом размере данных, а построение индекса требует больше времени, чем более быстрый поиск может улучшить запрос.Для больших наборов данных и больших разделов индексация, безусловно, будет намного быстрее ».
- https://www.researchgate.net/publication/315584294_The_STARK_Framework_for_Spatio-Temporal_Data_Analytics_on_Spark
Это имеет больше смысла, поскольку при добавлении постоянного времени создания индекса производительность должнахуже на маленьких наборах данных и лучше на больших.Главный вопрос, на который я хочу ответить: почему живое индексирование должно быть лучше даже для больших наборов данных?Насколько я понимаю, вы создаете индекс для запроса, вставляете в него, а затем запрашиваете его.Но этот «индекс на лету» по-прежнему является R-деревом, которое будет иметь такую же производительность, что и постоянный индекс, использующий R-дерево, только увеличивая задержку, добавляя создание индекса в запрос, а не заранее.