Стандартная схема EAV: один столбец для идентификатора объекта, один для идентификатора атрибута, один для идентификатора значения.
Историческая схема EAV: добавление дополнительных столбцов для времен / диапазонов дат
Во время выполнения определенные строки будут исключены. Может быть 0, 1 или много строк, возвращаемых на объект для каждого атрибута. Нам нужно только самое последнее значение для каждого оставшегося атрибута.
Наше текущее решение использует функцию Rank () SQL Server, чтобы пометить каждую строку рангом, а затем в предложении where мы имеем «and rank = 1».
Тем не менее, производительность не является удовлетворительным. В ходе анализа мы обнаруживаем, что присвоение рангов происходит довольно быстро, однако выполнение предложения where против ранга требует повторного сканирования данных и сохраняет весь набор данных в ОЗУ.
Какой самый быстрый способ ранжировать оставшиеся строки атрибута и возвращать только последние?