数据库查寻速度优化
OR
使用UNION连多张表
SELECT * FROM pre_tebal WHERE id=1 UNION SELECT * FROM pre_tebal WHERE id=2;
LIKE
使用LOCATE(‘小明’,name)>0
SELECT * FROM pre_tebal WHERE LOCATE('小明',name)>0;
IN
有限的数据下不管 in (1,2,3,4,5)
EXISTS 或 NOT EXISTS
WHERE 条件顺序
mysql,其条件执行顺序是 从左往右,自上而下
orcale,其条件执行顺序是从右往左,自下而上
把执行能过滤大量数据的条件放前面执行
WHERE 使用>或<
where使用>或< 后面跟ORDER BY
SELECT * FROM pre_tebal WHERE id>1000 ORDER BY id;
数据库维护
维护修复语句
DROP TABLE IF EXISTS `pre_table`; //删除表
check table tabTest; //查看表状态
OPTIMIZE TABLE `pre_table` //优化
REPAIR TABLE `pre_table` QUICK //用于修复被破坏的表。
myisamchk table.MYI //修复索引
myisamchk TABLE.MYI //用于修复被破坏的索引文件。
线程卡死
查询一张表卡死,其他表正常,可以去查看相应线程,如果有个查询语句的时间过长就杀死相应线程或重启数据库
SHOW PROCESSLIST; //查看线程
kill 111; //删除指定线程
部分常用函数
属性 | 介绍 | 函数 | 函数 |
---|---|---|---|
字符串 | 字母转大写 | upper(x) | ucase(x) |
字母转小写 | lower(x) | case(x) | |
合并字符串 | concat(str1,str2,str3…) | ||
比较字符串大小 | strcmp(str1,str2) | ||
获取字符串字节数 | length(str) | char_length(str) | |
字符串替换 | replace(str,'xxx','') | ||
数目计算 | 条数 | count() | |
平均 | max() | ||
最大 | max() | ||
最小 | min() | ||
相加 | sum() | ||
数值操作 | 绝对值函数 | abs(x) | |
向上取整函数 | ceil(x) | ||
向下取整函数 | floor(x) | ||
取模函数 | mod(x,y) | ||
随机数函数 | rand() | ||
四舍五入函数 | round(x,y) | ||
数值截取函数 | truncate(x,y) | ||
时间 | 获取当前日期 | curdate() | current_date() |
获取当前时间 | curtime() | current_time() | |
获取当前日期时间 | now() | ||
从日期中选择出月份数 | month(date) | monthname(date) | |
从日期中选择出周数 | week(date) | ||
从日期中选择出周数 | year(date) | ||
从时间中选择出小时数 | hour(time) | ||
从时间中选择出分钟数 | minute(time) | ||
从时间中选择出今天是周几 | weekday(date) | dayname(date) |