HarpyWar
@HarpyWar

Сравнение производительности запросов, что быстрее?

Имеется два варианта таблицы:
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) При каком количестве полей в таблице скорость выборки всех полей одним запросом будет медленнее, чем двумя запросами только двух полей из всех. При условии, что БД находится на той же машине, что и приложение.
  • Вопрос задан
  • 2456 просмотров
Решения вопроса 1
deadbyelpy
@deadbyelpy
веб-шмеб
select propX from tbl where id=Y
Быстрее чем
select val from tbl where id=Y and value='propX'
т.к. выборка по PK это почти намноо быстрее чем, когда еще значение приходится сравнивать

select * from tbl where id=Y -- все поля
select prop1,prop2,prop3,...,propX from tbl where id=Y -- все или половина полей
- Будут, только настолько мало что на деле может не будет разницы

При каком количестве полей в таблице скорость выборки всех полей одним запросом будет медленнее, чем двумя запросами только двух полей из всех.
- насколько мне известно, такого не произойдет никогда, или совсем не отработает, или будет быстрее
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы