在SQL中使用now()导致的性能下降(MySQL)
做数据库调优,一个简单的tip就使性能提升一大块时,被帮助的人自然是高兴而且感激,我也是满心欢喜。用所学帮助了他人,也说明还是有一技之长的,有一门能够养活自己的手艺。也算是手艺人啊。
同事让我帮助优化,在slow query log里发现有两个SQL执行的次数最多,并且每次都在两秒以上。用explain看了,也未发现索引使用方面的问题。
最后把怀疑的目光落在了SQL结尾处的>=now()上,now()每次都需要从系统中取,因此可能会导致无法使用query cache。
了解了一下需求,实际这里并不需要当时的时刻,只需要当天的日期就行了。因此建议同事把>=now()改成>=当前日期,而当前日期在程序中取得。
果然,性能大幅提高。
相关文档:
Next up in the Inside the Storage Engine series is a discussion of page structure. Pages exist to store records. A database page is an 8192-byte (8KB) chunk of a database data file. They are aligned on 8KB boundaries within the data files, starting at byte-offset ......
SQL*Loader 用于将大量数据装入数据库。
⑴、定宽数据
创建数据文件control.txt:
aaa,bbb
ccc,ddd
eee,fff
创建控制文件control.ctl:
load data
infile 'c:\loader.txt'
append
into table tester.mm(
m1 position(1:3) char,
m2 position(5:7) char)
批量加载数据:
sqlldr tester/test control=c:\loade ......
一、 SQL DMO 描述:SQL Distributed Management Objects(SQL分布式管理对象),存在于SQLDMO.dll文件中,实际上是一个COM 对象,通过调用SQL DMO的ListAvailableSQLServers方法取得。 列表类型:列举装有“客户端”和“服务端”的计算机。 适用条件:装有 SQL Server,且有SQLDMO.dll文件。 速度:中 调用示例:GetS ......
1.监控当前数据库谁在运行什么SQL语句
SELECT osuser, username, sql_text from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
2.分析表
analyze table tablename compute statistics for all indexes;
analyze table tablename compute statistics for all indexed col ......
SQL语句优化:
(1)可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(2)SELECT子句中避免使用 ‘ * ‘
(3)减少访问数据库的次数
方法3 (高效)?
SELECT A.EMP_NAME , A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
from EMP A,EMP B
WHERE A.EMP_NO = 342
AND B.EMP_NO = 291;
( ......