если вы все оптимизируете, X будет быстрее, если вы прочитаете данные с диска и будете запрашивать друзей одного человека. это потому, что вы можете расположить свои данные на диске так, чтобы они упорядочивались по одному индексу, который вы запрашиваете. Таким образом, для одного человека, вам нужно только выполнить один поиск диска. Для Y требуются запросы по двум индексам, поэтому может потребоваться несколько попыток поиска друзей даже для одного человека (а время доступа к диску обычно преобладает в простых запросах).
см. кластеризованные индексы в Википедии (и руководство по mysql )
если вам посчастливится узнать, что данные всегда будут в памяти, то оба они, скорее всего, будут «достаточно быстрыми» (и даже если данные находятся на диске, они могут быть достаточно быстрыми - я не говорю, что X - лучший дизайн, только то, что можно сделать максимально эффективным).