Имеется два варианта таблицы:
1. Таблица с множеством полей, являющимися свойствами объекта (id, prop1, prop2, ..., propX). Типы полей int либо varchar разной длины, в зависимости от каждого свойства.
Primary индекс на id.
2. Таблица с тремя колонками: id, key(varchar128), val(varchar200)). key и value - это ключ и значение каждого свойства объекта,
Unique индекс на id+key.
Что будет быстрее (например, у объекта 100 свойств):
а) Выборка по id в первом случае, 100 запросов (для каждого из полей свой запрос - для каждого объекта требуются не все свойства сразу, и всегда с запросом по одному).
select propX from tbl where id=Y
б) Выборка по id+key во втором случае, те же 100 запросов.
select val from tbl where id=Y and value='propX'
И уточнения по первому случаю. Сильно ли зависит скорость выборки от количества полей?
1) То есть, по скорости выполнения будут ли отличаться следующие запросы:
select * from tbl where id=Y -- все поля
select prop1,prop2,prop3,...,propX from tbl where id=Y -- все или половина полей
select prop1 from tbl where id=Y -- одно поле
2) При каком количестве полей в таблице скорость выборки всех полей одним запросом будет медленнее, чем двумя запросами только двух полей из всех. При условии, что БД находится на той же машине, что и приложение.