MSQL数据库检索优化

原创 2012年03月28日 14:28:41
MYSQL的优化是非常重要的.其他最常用也最需要优化的就是limit.mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降.

同样是取10条数据

select * from yanxue8_visit limit 10000,10 和
select * from yanxue8_visit limit 0,10
就不是一个数量级别的.

网上也很多关于limit的五条优化准则,都是翻译自mysql手册,虽然正确但不实用.今天发现一篇文章写了些关于limit优化的,很不错.

文中不是直接使用limit,而是获取到offset的id然后直接使用limit size来获取数据.根据他的数据,明显要好于直接使用limit.这里我具体使用数据分两种情况进行测试.(测试环境win2033 p4双核 (3GHZ) 4G内存 mysql 5.0.19)

1、offset比较小的时候.

select * from yanxue8_visit limit 10,10

多次运行,时间保持在0.0004-0.0005之间
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10

多次运行,时间保持在0.0005-0.0006之间,主要是0.0006
结论:偏移offset较小的时候,直接使用limit较优.这个显然是子查询的原因.

2、offset大的时候.
select * from yanxue8_visit limit 10000,10

多次运行,时间保持在0.0187左右
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10

多次运行,时间保持在0.0061左右,只有前者的1/3.可以预计offset越大,后者越优.

以后要注意改正自己的limit语句,优化一下mysql了
版权声明:本文为博主原创文章,未经博主允许不得转载。

C++利用MSQL API连接和操作数据库

1.C++连接和操作MySQL的方式在Windows平台,我们可以使用ADO、ODBC或者MySQL API进行连接和操作。ADO (ActiveX Data Objects,ActiveX数据对象)...
  • K346K346
  • K346K346
  • 2016年06月12日 22:53
  • 10665

Android手机客户端通过JSP实现与Tomcat服务器端通信(Msql数据库,Json作为载体)--服务端代码

服务器端主要代码: 1.首先构建一个Person类,用来保存用户信息 public class Person private String name; private String ad...

Android手机客户端通过JSP实现与Tomcat服务器端通信(Msql数据库,Json作为载体)--客户端代码

1.客户端文件,JsonParse,Json文件解析 import java.io.ByteArrayOutputStream; import java.io.InputStream; impo...

msql笔记七——ThreadLocal保证客户端同时拿到的是同一个连接,数据库多事务的处理

1、简介:JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,...

msql数据库的导入导出

mysql数据使用在命令行使用mysqldump导入,使用输入重定向符导入。 mysql数据库使用java执行导入导出命令进行备份和还原...

免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE

免费数据库(SQLite、Berkeley DB、PostgreSQL、MySQL、Firebird、mSQL、MSDE、DB2 Express-C、Oracle XE 2009-02-16 1...
  • qyp1314
  • qyp1314
  • 2012年04月20日 16:53
  • 2100

MSQL优化基础(Join 选择率)

111

MSQL优化基础(无直方图选择率)

案例一 无直方图  range 内 = 的选择率 选择率=1/NDV×非空率 非空率=(表行数-NUM_NULLS)/表行数 col column_name format a10; col NUM_D...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSQL数据库检索优化
举报原因:
原因补充:

(最多只允许输入30个字)