Использовать '=' или ЛЮБИТЬ сравнивать строки в SQL?

Поместите свой код в метод onCreate:

NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);

notificationManager.cancelAll();
155
задан Donald Duck 27 November 2017 в 22:30
поделиться

7 ответов

Для наблюдения различия в производительности попробуйте это:

SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name = B.name

SELECT count(*)
FROM master..sysobjects as A
JOIN tempdb..sysobjects as B
on A.name LIKE B.name

Сравнение строк с '=' намного быстрее.

120
ответ дан Chris Frederick 23 November 2019 в 21:54
поделиться

LIKE и оператор равенства имеют различные цели, они не делают того же самого:
= намного быстрее, тогда как LIKE может интерпретировать подстановочные знаки. Используйте = везде, где Вы можете и LIKE везде, где Вы должны.

SELECT * FROM user WHERE login LIKE 'Test%';

Демонстрационные соответствия:

Тест TestUser1
TestUser2
TestU

182
ответ дан P5Coder 23 November 2019 в 21:54
поделиться

В моем маленьком опыте:

" =" для Точных совпадений.

"КАК" для Частичных Соответствий.

35
ответ дан Stu Andrews 23 November 2019 в 21:54
поделиться

Существует несколько других приемов, которые Пост-ГРЭС предлагает для сопоставления строк (если это, оказывается, Ваш DB):

ILIKE, который является нечувствительным к регистру КАК соответствие:

select * from people where name ilike 'JOHN'

Соответствия:

  • Джон John
  • ДЖОН

И если Вы хотите стать действительно безумными, можно использовать регулярные выражения:

select * from people where name ~ 'John.*'

Соответствия:

  • John
  • Johnathon
  • Johnny
14
ответ дан Ceilingfish 23 November 2019 в 21:54
поделиться

Поскольку сопоставление с образцом использует КАК. Для точного совпадения =.

7
ответ дан Techmaddy 23 November 2019 в 21:54
поделиться

LIKE используется для сопоставления с образцом, и = используется для теста равенства (как определено COLLATION используемый).

= может использовать индексы, в то время как LIKE запросы обычно требуют, чтобы тестирование каждой записи в наборе результатов фильтровало его (если Вы не используете полнотекстовый поиск), таким образом = имеет лучшую производительность.

6
ответ дан Mehrdad Afshari 23 November 2019 в 21:54
поделиться

КАК соответствие любит подстановочный символ [*?] в оболочке
КАК '%suffix' - дают мне все, что заканчивается суффиксом. Вы не могли сделать, это с =
Зависит от случая на самом деле.

4
ответ дан Gishu 23 November 2019 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: