本文转载自MySql查询性能优化避免向数据库请求不需要的数据在访问数据库时,应该只请求需要的行和列。请求多余的行和列会消耗MySql服务器的CPU和内存资源,并增加网络开销。
例如在处理分页时,应该使用LIMIT限制MySql只返回一页的数据,而不是向应用程序返回全部数据后,再由应用程序过滤不需要的行。
当一行数据被多次使用时可以考虑将数据行缓存起来,避免每次使用都要到MySql查询。
避免使用SELECT *这种方式进行查询,应该只返...
本文为博主原创,未经允许不得转载:我们都知道创建索引的目的是快速从整体集合中选择性地读取满足条件的一部分集合。mysql中一张表是可以支持多个索引的。但是,你写sql语句的时候,并没有主动指定使用哪个索引。不知道你有没有碰到过这种情况,一条创建了索引的sql语句在查询过程中却没有使用索引,或是一条本来可以执行的很快的语句,却由于mysql选错了索引,而导致查询速度变得很慢?充分优化和利用索引能够大大提高数据的查询...
1.数据准备mysql> select * from student;+----+--------+----------+---------+-------------+| id | name | idCardNo | isCadre | nickname |+----+--------+----------+---------+-------------+| 1 | Tom | 350020 | 1 | Big T || 2 | Jim | 350022 | NULL | PP || 3 | Lucy | 460311 | NULL | Little girl || 4 | Liming | 733098 | 1 | NULL |+----+-----...
1、开篇搞开发的都知道,当数据量很大的时候,我们的代码逻辑的简单性就显得十分重要,否则处理起来就需要花费相当多的时间。另外还有一个地方需要注意的是我们写的sql语句。一个拥有多年开发的资深开发者可以相比于刚从事开发经验不足的开发者写的sql效率要高些,数据量小基本没有什么关系。但是假如你在拥有高数据的BAT,或者国家企业,那这条sql的差异就明显就大了。所以,能写出好的sql是相当重要的。2、简单的查询sql(1)sel...
select*from `location` where (
acos(
sin(([#latitude#]*3.1415)/180) *sin((latitude*3.1415)/180) +cos(([#latitude#]*3.1415)/180) *cos((latitude*3.1415)/180) *cos(([#longitude#]*3.1415)/180- (longitude*3.1415)/180)
)*6370.996
)<=1; 原文:https://www.cnblogs.com/banywl/p/9528868.html
-- 查询今天的数据 select * from `user` where to_days(birthday) = to_days(CURDATE()); -- 查询昨天的数据 =1; ' ref='nofollow'>select * from `user` where to_days(CURDATE()) - to_days(birthday)<=1; -- 查询最近7天的数据 (CURDATE(),INTERVAL 7 DAY); ' ref='nofollow'>select * from `user` where birthday > DATE_SUB(CURDATE(),INTERVAL 7 DAY); -- 查询最近一个季度的数据 (CURDATE(), INTERVAL 3 MONTH) ' ref='nof...
1 #!/bin/bash 2 #查询3 echo -e 4 for i in `cat id.txt` 5 do 6 A=`mysql -h10 -uw -p2012 -Ne "select
Id,Name,User_Logindate from info where Id=$i"`; 7 B=`mysql -h10 -uw -p2012
-Ne "select ifnull(sum( Amount),0) from Info where Date between
‘2014-05-21‘ and ‘2014-05-22‘ and Id=$i and Res=1"` 8 echo -e
"$A\t\t\t\t$B\t" >> tmp.xls; 9 done原文:http://www.cnblogs.com/fupeng/p/3752913...
mysql 查询 1: Distinct 有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能去重他的目标字段(即所有查询的字段)注意: distinct必须放在要查询字段的开头eg: 1:select distinct user_name from xxx 这样会过滤掉user_name 重复的, 2:如果这样写: select distin...
***explain ****分析******* 1观察,至少跑一天,看看生产的慢SQL情况 2开启慢查询日志,设置阙值,比如超过5秒钟的就是慢SQL,并将它抓取出来 3explain+慢SQL分析 4show profile 5运维经理 or DBA,进行SQL数据库服务器的参数调优 *****总结***** 1慢查询的开启并捕获 2explain+慢SQL分析 3show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况 4SQL数据库服务器的参数调优 *********...
count(*) 和 count(1)和count(列名)区别? 执行结果上:count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULLcount(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULLcount(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计执行效率上:列名为主键,count(列名)会比count(1)快列名不为主...
数据如今是这种,我想确定出type列中的news和image。。。。甚至以后有其它值,他们分别有多少个。SELECTtype,count(1) AS counts
FROMmaterial
GROUP BYtype
count(1),代表统计第一列。写上1 比写 *的效率高!原文:http://www.cnblogs.com/brucemengbm/p/6801275.html
比如我存储的数据,有的是 山东,有的是山东省 我想统一改为山东省 UPDATE t_security SET province =REPLACE( province, ‘山东‘, ‘山东省‘ ) WHERE province =‘山东‘; 原文:https://www.cnblogs.com/jnhs/p/10046832.html
select * from hengtu_demandpush a where (a.did,a.mid) in (select did,mid from hengtu_demandpush group by did,mid having count(*) > 1) 或select * from hengtu_demandpush group by did,mid having count(*)>1 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多...
查询用逗号分隔的字段,可以用字符串函数FIND_IN_SET(); 查询数据库表中某个字段(值分行显示),可以用函数in()。 今天工作中遇到一个问题,就是用FIND_IN_SET()函数解决的。 第一部分: FIND_IN_SET()函数用法, 查询用逗号分隔的字段, 表A中 go_value字段的值是以逗号分割, 查询 go_value字段中含有3的行: select * from A where find_in_set(‘3‘, go_value); 第二部...
一:简单查询 1. and、or、not 如果and与or共同出现在where条件中,则and的优先级高。 查询remark不为null的记录 select * from student where remark is not null; 2. 模糊查询(like) 通配符:% 任意个数的任意字符 eg:将姓名中含有‘东‘字的学生信息查出来 select * from student where name like ‘%东%‘; _ 代表一个字符 eg:...