Нужно ли использовать «FETCH FIRST n ROWS ONLY» или «LIMIT» при выборе уникального идентификатора в предложении where

0

Мне было интересно, нужно ли мне использовать оператор FETCH FIRST n ROWS ONLY в DB2 или оператор LIMIT в MySQL, если я запрашиваю уникальный идентификатор с индексом из таблицы, чтобы повысить производительность. Или провайдер sql уже заметил, что будет максимум один результат и остановит запрос, когда найдена строка?

Пример запроса:
DB2: SELECT * FROM myTable WHERE id = 1 FETCH FIRST 1 ROWS ONLY
MySQL: SELECT * FROM myTable WHERE id = 1 LIMIT 1

Кто-нибудь уже думал об этом?

  • 0
    В mylsq Ограничение применяется к результату выбора .. поэтому у вас нет улучшения производительности
  • 0
    А что насчет FETCH FIRST 1 ROWS ONLY ?
Показать ещё 2 комментария
Теги:
db2

2 ответа

0
Лучший ответ

Вы можете использовать как FETCH FIRST 1 ROWS ONLY так и LIMIT в Db2, проверьте настройки совместимости DB2.

Если возвращается только одна строка, не имеет значения, указан ли этот синтаксис. Однако, если вы или система не уверены, то это дополнительная гарантия. В зависимости от настроек оптимизатора (или настроения, статистики или метаданных), дополнительный синтаксис может помочь с производительностью. Причина в том, что система баз данных знает, что должна быть возвращена только 1 строка, и она может оптимизироваться для этого случая.

Если есть уникальный индекс по id, то это должно быть очевидно, но есть ли индекс...?

  • 0
    Да, в этом ряду есть индекс. Я редактировал вопрос. Итак, нужно ли указывать оператор LIMIT?
  • 0
    Мой ответ уже включает это. Нет необходимости, но я бы все равно сделал это по привычке.
Показать ещё 1 комментарий
0

В случае, если атрибут объявлен уникальным, я настоятельно рекомендую отказаться от этой практики по двум причинам:

  1. это никак не увеличивает производительность оптимизатора модератора, а только увеличивает работу оптимизатора SQL, который должен обрабатывать другое предложение,

  2. (что наиболее важно) снижает читаемость оператора для сопровождающего кода, поскольку может создавать впечатление, что атрибут не является уникальным, что приводит к путанице в запросе и базовой таблице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню