php+mysql查询优化简单实例

 这篇文章主要介绍了php+mysql查询优化简单实例,分析了php+mysql程序设计中关于SQL语句优化查询的技巧,对于提高查询效率有一定参考借鉴价值,需要的朋友可以参考下

 
 

本文实例分析了php+mysql查询优化的方法。分享给大家供大家参考。具体分析如下:

PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了.

因此,需要做好对mysql的查询优化,下面通过一个简单的例子,展现不同的SQL语句对于查询速度的影响.

存在这样的一张表test,它有一个自增的id作为主索引,现在要查询id号处于某一个范围内的记录,可以使用如下SQL语句:

代码如下:
SELECT *
FROM `test`
order by id asc
limit 208888,50

这条SQL语句的意思是从id号为208888的记录开始向后取50条记录,在一个30万条记录的数据库中测试,在主索引都已经建立好的情况下,执行这条语句的时间为40~50秒,那么有没有更快SQL语句来执行呢?显然是有的,看看下面这条SQL语句:
代码如下:
SELECT *
FROM `test`
WHERE id
BETWEEN 208838
AND 208888

这条语句使用了一个条件进行过滤,在实际中测试的执行时间约为0.06秒.

 

究其原因,是因为虽然id属性上已经有索引了,但是排序仍然是一个非常高代价的操作,要慎用,而第二个语句,就可以让MySql充分利用数据库中已经建立好的B+树索引,所以查找起来速度相当快,是原来的几百倍.

由此可见,网站开发者在使用SQL语句的时候,一定要小心谨慎,因为一个疏忽大意的SQL语句,可能使得你的网站访问速度急剧下降,后台数据库面临巨大压力,并且很快陷入无法打开页面的窘境.

希望本文所述对大家的php+mysql程序设计有所帮助。

时间: 2024-10-30 09:14:07

php+mysql查询优化简单实例的相关文章

php读取mysql的简单实例

读取数据库我们需要利用php中的函数连接数据库然后再利用sql查询 表中的数据再遍历出来即可了,下面我们来看一个简单读取mysql实例 代码如下: <?php     $link=mysql_connect("localhost","root","之前的管理员密码");     if(!$link) echo "没有连接成功!";     mysql_select_db("infosystem", $

php读取mysql的简单实例_php实例

复制代码 代码如下: <?php    $link=mysql_connect("localhost","root","之前的管理员密码");    if(!$link) echo "没有连接成功!";    mysql_select_db("infosystem", $link); //选择数据库    $q = "SELECT * FROM info"; //SQL查询语句  

php通过PHPExcel导入Excel表格到MySQL数据库的简单实例_php实例

如下所示: <?php define('BASE_URL', realpath(dirname(__FILE__))); require_once BASE_URL . '/PHPExcel/PHPExcel.php';//引入PHPExcel类文件 //excel文件的地址 $excel_fiel_path = './phpexcel.xls'; $PHPExcel = new PHPExcel();// 实例化PHPExcel工具类 //分析文件获取后缀判断是2007版本还是2003 $ex

PHP MySql增删改查的简单实例_php实例

mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?php $con=@mysql_connect('localhost','root','root');//连接数据库 mysql_select_db('test',$con);//选择数据库 $userInfo=mysql_query("select * from user",$con);/

mysql 实现互换表中两列数据方法简单实例_Mysql

由于最近项目,有这样一个需求,是把数据库中的两列数据互换,经过好久才搞定,这里写个简单实例,做过记录. 1.创建表及记录用于测试 CREATE TABLE `product` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '产品id', `name` varchar(50) NOT NULL COMMENT '产品名称', `original_price` decimal(5,2) unsigned NOT NULL COMMEN

PHP MySql增删改查的简单实例

mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?php $con=@mysql_connect('localhost','root','root');//连接数据库 mysql_select_db('test',$con);//选择数据库 $userInfo=mysql_query("select * from user",$con);/

MySQL按照汉字的拼音排序简单实例

如果存储姓名的字段采用的是GBK字符集,那就好办了,因为GBK内码编码时本身就采用了拼音排序的方法(常用一级汉字3755个采用拼音排序,二级汉字就不是了,但考虑到人名等都是常用汉字,因此只是针对一级汉字能正确排序也够用了). 直接在查询语句后面 添加 order by name asc; 查询结果按照姓氏的升序排序: 如果存储姓名的字段采用的是 utf8字符集,需要在排序的时候对字段进行转码:对于的代码是  order by convert(name using gbk) asc; 同样,查询的

MySQL查询优化技术系列讲座之使用索引

索引是提高查询速度的最重要的工具.当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用.在MySQL邮件列表中,人们经常询问那些让查询运行得更快的方法.在大多数情况下,我们应该怀疑数据表上有没有索引,并且通常在添加索引之后立即解决了问题.当然,并不总是这样简单就可以解决问题的,因为优化技术本来就并非总是简单的.然而,如果没有使用索引,在很多情况下,你试图使用其它的方法来提高性能都是在浪费时间.首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用. 这一部分讲述

MySQL查询优化器浅析

1.定义 Mysql查询优化器的工作是为查询语句选择合适的执行路径.查询优化器的代码一般是经常变动的,这 和存储引擎不太一样.因此,需要理解最新版本的查询优化器是如何组织的,请参考相应的源代码.整体 而言,优化器有很多相同性,对mysql一个版本的优化器做到整体掌握,理解起mysql新版本以及其他数据 库的优化器都是类似的. 优化器会对查询语句进行转化,转化等价的查询语句.举个例子,优化器会将下面语句进行转化: SELECT - WHERE 5=a; 转化后的等价语句为: SELECT - WH