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