Поиск SQL «существует», больше не считайте, это отнимает много времени!

MySQL
  • Как пишет большинство людей
  • Оптимизация
  • Суммировать

Есть только два состояния для запроса «да» и «нет» из таблицы базы данных в соответствии с определенным условием, так зачем вам нужен SELECT count(*) при написании SQL?

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

Написание SQL:

SELECT count(*) FROM table WHERE a = 1 AND b = 2

Написание Java:

int nums = xxDao.countXxxxByXxx(params);
if ( nums > 0 ) {
  //当存在时,执行这里的代码
} else {
  //当不存在时,执行这里的代码
}

Это нормально, нет проблем Оптимизация Рекомендуемая запись выглядит следующим образом:

Написание SQL:

SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1

Написание Java:

Integer exist = xxDao.existXxxxByXxx(params);
if ( exist != NULL ) {
  //当存在时,执行这里的代码
} else {
  //当不存在时,执行这里的代码
}

SQL больше не использует количество, а вместо этого использует LIMIT 1, поэтому, когда запрос к базе данных встречает единицу, он возвращается и не продолжает искать, сколько еще. Можно прямо судить, не пусто ли в бизнес-коде

Суммировать

Чем больше элементов найдено по условиям запроса, тем очевиднее улучшение производительности, а в некоторых случаях можно сократить создание совместных индексов.