BETWEEN
может помочь избежать ненужной переоценки выражения:
SELECT AVG(RAND(20091225) BETWEEN 0.2 AND 0.4)
FROM t_source;
---
0.1998
SELECT AVG(RAND(20091225) >= 0.2 AND RAND(20091225) <= 0.4)
FROM t_source;
---
0.3199
t_source
- это просто фиктивная таблица с 1,000,000
записями.
Конечно, это можно обойти, используя подзапрос, но в MySQL
это менее эффективно.
И, конечно же, BETWEEN
более читабелен. Потребуется 3
раз, чтобы использовать его в запросе, чтобы запомнить синтаксис навсегда.
В SQL Server
и MySQL
, LIKE
против константы с не ведущим '%'
также является сокращением для пары >=
и <
:
SET SHOWPLAN_TEXT ON
GO
SELECT *
FROM master
WHERE name LIKE 'string%'
GO
SET SHOWPLAN_TEXT OFF
GO
|--Index Seek(OBJECT:([test].[dbo].[master].[ix_name_desc]), SEEK:([test].[dbo].[master].[name] < 'strinH' AND [test].[dbo].[master].[name] >= 'string'), WHERE:([test].[dbo].[master].[name] like 'string%') ORDERED FORWARD)
Однако синтаксис LIKE
более читабелен.