Шардирование (горизонтальное партиционирование) — это принцип проектирования базы данных, при котором логически независимые строки таблицы базы данных хранятся раздельно, заранее сгруппированные в секции, которые, в свою очередь, размещаются на разных, физически и логически независимых серверах базы данных
Если у нас таблица в миллионы записей и для поиска в ней конкретных данных конкретного пользователя мы делаем перебор всех данных всех пользователей (если нет индексов), то да - разбиение таблицы и хранение данных для каждого отдельного пользователя на разных серверах имеет смысл. Но если у нас есть индексы по полю-идентификатору пользователя (а индексы в больших таблицах есть всегда), то мы итак не будем перебирать все данные всех пользователей - тогда чем такое раздельное хранение данных на разных серверах для каждого пользователя нам помогает?
Разве что при апдейте\инсерте данных для одного пользователя нам нужно обновить индекс данных только этого пользователя, а не общий индекс для всех (но и тут не очевиден выигрыш - т.к. хоть индекс стал меньше и обновляется быстрее, зато при каждом запросе нам нужно дополнительно разруливать, с какого шарда брать данные для данного юзера).
В общем, в чем конкретно выигрыш от шардирования?