Я считаю записи с такими запросами, как
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%something%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%another%'
SELECT COUNT(col1) FROM table1 WHERE col1 LIKE '%word%'
Для каждого подсчета mysql должен обходить всю таблицу, и это большая проблема, если иметь длинную таблицу и многочисленные запросы.
Интересно, есть ли способ сделать все подсчеты в одном запросе? В этом случае, когда mysql проходит по каждой строке, он будет обрабатывать все подсчеты, и нет необходимости сканировать всю таблицу снова и снова.
mysql
query
query-performance
count
Googlebot
источник
источник
Ответы:
Чтобы получить счет для каждого из тех, кого вы можете попробовать
источник
Аналогично решению Аарона, более короткий синтаксис:
Выражение LIKE приводит к логическому результату.
TRUE
равно 1 ,FALSE
равно 0 , поэтомуCASE
здесь избыточно.источник
TINYINT
в этой истории.SUM
берет любой тип числа (даже с плавающей точкой) и выдает числовой результат. Вы можетеSUM
столбцыTINYINT
типа, чтобы получить значения в тысячах - это не проблема.TINYINT
в этой истории», возможно, было не очень хорошим предложением для начала.SUM
упомянутая здесь функция работает не так, как в MS SQL Server. В Transct-SQLSUM
можно использовать только числовые столбцы.Если я правильно понял вашу потребность, возможно, это поможет:
источник