Я предвосхищу это, сказав, что я новичок в SQL и таблицах базы данных; это, однако, не означает, что я не знаю своих основ.
Если ваш пример сильно не упрощен, вам действительно следует использовать первый пример. Мало того, что это будет быстрее и проще запрашивать, но это просто имеет больше смысла.
В этом примере вам вообще не нужно разбивать ваши таблицы; ваши «идентификаторы атрибутов» адекватно представлены заголовками таблиц. Кроме того, эти значения сами по себе не имеют никакого реального значения, поэтому они не обязательно должны быть в другой таблице.
Как правило, вы открываете новую таблицу и ссылаетесь на нее, как если бы у вас был другой объект, существующий отдельно, относящийся к вашему объекту с отношением один-ко-многим.
Вот пример (фактически из моей базы данных на сервере O'Reilly) с использованием записей в блоге и комментариев к записям в блоге:
mysql> select * from blog_entries;
+----+--------------+-------------+---------------------+
| id | poster | post | timestamp |
+----+--------------+-------------+---------------------+
| 1 | lunchmeat317 | blah blah | 0000-00-00 00:00:00 |
| 2 | Yongho Shin | yadda yadda | 0000-00-00 00:00:00 |
+----+--------------+-------------+---------------------+
2 rows in set (0.00 sec)
mysql> select id, blog_id, poster, post, timestamp from blog_comments;
+----+---------+--------------+----------------+---------------------+
| id | blog_id | poster | post | timestamp |
+----+---------+--------------+----------------+---------------------+
| 1 | 1 | lunchmeat317 | humina humina | 0000-00-00 00:00:00 |
| 2 | 1 | Joe Blow | huh? | 0000-00-00 00:00:00 |
| 3 | 2 | lunchmeat317 | yakk yakk yakk | 0000-00-00 00:00:00 |
| 4 | 2 | Yongho Shin | lol | 0000-00-00 00:00:00 |
+----+---------+--------------+----------------+---------------------+
4 rows in set (0.00 sec)
mysql>
Думайте об этом с логической точки зрения; нет никакой причины искусственно вводить сложность в этот дизайн, когда он не должен быть там. В вашем примере длина, ширина и высота на самом деле не являются отдельными объектами, и все они связаны с размерами объекта, который вы описываете в строке таблицы. Кроме того, ширина и высота длины имеют только одно значение в данный момент времени.
Надеюсь, в этом был какой-то смысл - если я немного педантичен в своей педагогике, я прошу прощения. Однако, если кто-то еще наткнется на этот вопрос, надеюсь, этот пример поможет им.
Удачи.
Редактировать: Я только что понял, что ваш вопрос был конкретно о производительности. Это немного более подробно, возможно, основано на движке БД, который вы используете? Однако, как правило, я бы предположил, что запрос к таблице без каких-либо объединений будет немного быстрее, учитывая, что денормализация является широко цитируемым методом повышения производительности.