Я просматриваю код, который написал старый разработчик, которого уже нет. Я нашел кое-что, что, я не совсем уверен, имеет смысл делать, но я не думаю, что у меня достаточно знаний или достаточно хорошего гугл-фу, чтобы найти ответ, так что вот:
Код выглядит так: это:
var queryCount = SELECT COUNT(Col1) FROM MyTable WHERE ColumnInIndex = 'SomeValue'
if(queryCount == 0)
return [];
var results = SELECT Col1, Col2, Col3,... FROM MyTable WHERE ColumnInIndex = 'SomeValue'
return results;
Итак, моей первой мыслью было то, что кажется избыточным и в первую очередь нужно просто использовать результаты запроса select. Я копал немного дальше, потому что коммит предлагает его для настройки производительности.
Из того, что я понял из поиска в Google, на самом деле count будет быстрее, потому что ему не нужно возвращать какие-либо данные или извлекать какие-либо строки и может полагаться исключительно на индекс.
Однако в псевдокоде, который я написал выше, случай, когда предложение where не возвращает ни одной строки, кажется, что мы не получим повышения производительности, потому что ни один ни select не вернет никаких результатов. Кроме того, когда на самом деле есть результаты, мы выполняем два из этих запросов вместо одного.
Кроме того, кажется, что, поскольку мы используем в первую очередь строки, мы должны просто получить данные в одном запросе по сравнению с двумя поездками в базу данных.
Я здесь совсем не в базе?
Мы используем MySql v5.6.46