select - query

一、between in
(都支持数字、字符串、时间日期类型)
between具备比较功能, 支持 not between and
expr BETWEEN min AND max
当 expr 表达式的值大于或等于 min 且小于或等于 max 时, BETWEEN 的返回值为 1 ,否则返回 0
BETWEEN 与 <、<=、>=、> 等运算符在某些情况下有着类似的功能,但 BETWEEN 运算级别更高且效率上更甚一筹。当然由于 BETWEEN 存在边界值的问题而不够灵活
in 支持not in
in的列表项值不明确是,可以通过一个子查询:
SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=0)


一般情况下,对索引字段操作,使用or 效率高于in,但对于列表项不确定时,就必须使用in运算符

在任何查询中, int 时间戳效率都是最优的

 

参考:https://www.cnblogs.com/tianzeng/p/9279593.html

 

二、find_in_set/in/like(find_in_set性能低于in)

查询字段中逗号分隔的内容里包含该变量: select * from table where find_in_set('a', field); //与in的区别是, field是常量,可以用in, 否则只能用 find_in_set;  ---select * from table where 'a' in (field);

 

like 是模糊匹配, 主要问题是无法做到精确匹配(find_in_set/in是精确匹配)

SELECT userid,username,userrole 角色 FROM `user` WHERE userrole LIKE '%2%';

SELECT userid,username,userrole 角色 FROM `user` WHERE find_in_set('2',userrole);  //后者要比前者的量级小点, 针对25,102 无法做到精确匹配

 

参考:

https://www.jb51.net/article/143105.htm

https://www.cnblogs.com/widgetbox/p/12394254.html

 

posted on 2020-06-10 16:26  wangsong412  阅读(205)  评论(0编辑  收藏  举报