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_source1,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構文はより読みやすくなっています。