以下查询中哪一个将更快更优化(为什么):
> SELECT * FROM items WHERE w = 320 AND h = 200(w and h are INT)
> SELECT * FROM items WHERE dimensions =’320×200′(dimensions is VARCHAR)
解决方法
以下是一些实际测量. (使用sqlite;稍后可以尝试使用
MySQL)
数据= w,h∈{1 … 1000}的所有1,000,000个组合,按随机顺序排列.
CREATE TABLE项(id INTEGER PRIMARY KEY,w INTEGER,h INTEGER)
执行SELECT * FROM项目的平均时间(20次运行)WHERE w = 320,h = 200为5.39±0.29μs.
CREATE TABLE项(id INTEGER PRIMARY KEY,dimensions TEXT)
平均执行时间SELECT * FROM项目WHERE dimensions =’320×200’为5.69±0.23μs.
没有显着差异,效率明显.
但
在可用性方面存在巨大差异.例如,如果要计算矩形的面积和周长,两列方法很容易:
SELECT w * h,2 *(w h)FROM items
尝试以相反的方式写相应的查询.