- Как пишет большинство людей
- Оптимизация
- Суммировать
Есть только два состояния для запроса «да» и «нет» из таблицы базы данных в соответствии с определенным условием, так зачем вам нужен 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, поэтому, когда запрос к базе данных встречает единицу, он возвращается и не продолжает искать, сколько еще. Можно прямо судить, не пусто ли в бизнес-коде
Суммировать
Чем больше элементов найдено по условиям запроса, тем очевиднее улучшение производительности, а в некоторых случаях можно сократить создание совместных индексов.