И IEEE и ACM производят много хороших вычислительных журналов, которые могли бы представлять интерес в зависимости от Ваших точных процентов. Я - подписчик на обоих.
Я бы назвал это плохой практикой, поскольку когда дело доходит до чего-то вроде идентификатора пользователя
, он обычно уникален, и у вас не будет больше одного. Следовательно, наличие LIMIT 1
кажется довольно противоречивым, и кому-то, кто придет для поддержки вашего кода позже, возможно, придется пересмотреть ваш дизайн.
Кроме того, я не думаю, что это вообще дает какое-либо преимущество в скорости. Вы можете проверить Explain mySQL, чтобы узнать о простом инструменте для анализа запроса.
Обратите внимание, как упомянуто в комментариях. LIMIT #
действительно имеет скорость и общие преимущества в других случаях, но не в этом.
Столбец идентификатора пользователя является первичным ключом таблицы. Является ли хорошей практикой использовать LIMIT 1 в конце этого оператора mySQL? Или есть какие-то преимущества в скорости?
Использование LIMIT 1
в конце примера - не лучшая практика - в этом нет необходимости, поскольку столбец идентификатора пользователя является первичным ключом. Первичный ключ означает, что в таблице есть только одна строка / запись с этим значением, будет возвращена только одна строка / запись.
Но окончательный индикатор - это план объяснения:
explain SELECT t.name FROM USERS t WHERE t.userid = 4
... возвращает:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
] ... и:
explain SELECT t.name FROM USERS t WHERE t.userid = 4 LIMIT 1
... возвращает:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
Нет разницы, нет необходимости. В этом случае он выглядит оптимизированным (поиск только по первичному ключу).
Использование LIMIT
без ORDER BY
вернет произвольную строку / record, если возвращено более одного. Например, при использовании сценария «Джон Смит», где 2+ человека могут иметь имя «Джон Смит»:
SELECT t.userid
FROM USERS t
WHERE t.first_name = 'John'
AND t.last_name = 'Smith'
LIMIT 1
... рискует вернуть любое из возможных значений идентификатора пользователя
, где имя - «Джон "и фамилия" Смит ". Нельзя гарантировать, что всегда будет возвращаться одно и то же значение, и вероятность получения разных значений каждый раз увеличивается с увеличением количества возможных записей.
Лично меня не волнует использование LIMIT. Синтаксис не поддерживается в Oracle, SQL Server или DB2, что делает запросы менее переносимыми. LIMIT - это инструмент, который следует использовать консервативно, а не первое, к чему вы стремитесь - знать, когда использовать агрегатные и / или аналитические функции.
рискует вернуть любое из возможных значений идентификатора пользователя
, где имя - «Джон», а фамилия - «Смит». Нельзя гарантировать, что всегда будет возвращаться одно и то же значение, и вероятность получения разных значений каждый раз увеличивается с увеличением количества возможных записей.
Лично меня не волнует использование LIMIT. Синтаксис не поддерживается в Oracle, SQL Server или DB2, что делает запросы менее переносимыми. LIMIT - это инструмент, который следует использовать консервативно, а не первое, к чему вы стремитесь - знать, когда использовать агрегатные и / или аналитические функции.
рискует вернуть любое из возможных значений идентификатора пользователя
, где имя - «Джон», а фамилия - «Смит». Нельзя гарантировать, что всегда будет возвращаться одно и то же значение, и вероятность получения разных значений каждый раз увеличивается с увеличением количества возможных записей.
Лично меня не волнует использование LIMIT. Синтаксис не поддерживается в Oracle, SQL Server или DB2, что делает запросы менее переносимыми. LIMIT - это инструмент, который следует использовать консервативно, а не первое, к чему вы стремитесь - знать, когда использовать агрегатные и / или аналитические функции.
и вероятность получения разных значений каждый раз увеличивается с количеством возможных записей.Лично меня не волнует использование LIMIT. Синтаксис не поддерживается в Oracle, SQL Server или DB2, что делает запросы менее переносимыми. LIMIT - это инструмент, который следует использовать консервативно, а не первое, к чему вы стремитесь - знать, когда использовать агрегатные и / или аналитические функции.
и вероятность получения разных значений каждый раз увеличивается с количеством возможных записей.Лично меня не волнует использование LIMIT. Синтаксис не поддерживается в Oracle, SQL Server или DB2, что делает запросы менее переносимыми. LIMIT - это инструмент, который следует использовать консервативно, а не первое, к чему вы стремитесь - знать, когда использовать агрегатные и / или аналитические функции.