php sql级别优化

1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0
4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20 Continue reading »php sql级别优化

MongoDB与PHP

Windows PHP的MongoDB拓展的安装

windows下用php操作MongoDB需要安装驱动,所需dll可以到http://github.com/mongodb/mongo-php-driver/downloads 下载。比如我的php版本是5.2.6,我下载的就是mongo-1.0.9-php5.2vc6ts.zip。

把php_mongo.dll放到你php的ext目录,然后php.ini中加入

extension=php_mongo.dll

重启web服务器就可以了。是否成功可以通过查看phpinfo() 函数的结果中是否加载了MongoDB模块儿来判定。

与mysql对应的php下数据库管理工具phpmyadmin类似,MongoDB下的php数据库管理工具为phpmoadmin可以到http://www.phpmoadmin.com/ 这里下载,放到你的web路径下就ok。

现在你可以开始自己的php与MongoDB的开发之旅了。

 

Linux PHP的MongoDB拓展的安装 # wget http://pecl.php.net/get/mongo-1.2.6.tgz # tar zxvf mongo-1.2.6.tgz # cd mongo-1.2.6 # /usr/local/php/bin/phpize # ./configure –enable-mongo=share –with-php-config=/usr/local/php/bin/php-config # make && make installl

将生成的拓展mongo.so文件添加到php.ini中,重启php-fpm,然后查看下phpinfo()

请编辑php.ini文件。添加如下一行:

PHP Code复制内容到剪贴板 extension=mongo.so

然后用php输出:phpinfo,就可以看到mongo的信息了。。这样就说明你安装成功的了!

windows MongoDB安装

下载安装程序

http://www.mongodb.org/的下载页找到windows 32位的安装程序,实际是一个绿色的程序。本文以mongodb-win32-i386-1.6.0.zip 为例。

配置运行MongoDB

将下载下来的mongodb压缩包解压缩到目标目录,比如D:\mongodb ,先打开cmd命令行,输入:

d:\mongodb\bin>mongod.exe –dbpath d:\mongodb\db

这里的d:\mongodb 目录下没有db文件夹需要自己建立一个,此时mongod 进程运行起来,再打开一个cmd窗口,输入:

d:\mongodb\bin\mongo.exe

进入mongodb命令模式 Continue reading »windows MongoDB安装

MySQL server has gone away

今天用phpmyadmin导入数据库数据,由于数据库文件稍大一些足有三四十兆,导入时直接出现内存分配不足的fatal error。不得不用命令行导入恢复数据库:mysql -u user -p pass database<data.sql 结果,出现了奇怪的“MySQL server has gone away”。网上搜索了一下,需要修改一下mysql的配置文件。

针对这种情况的出现的成因有两种:

1、应用程序(比如PHP)长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。可以通过修改配置文件添加上

wait_timeout=2880000 interactive_timeout = 2880000 延长执行和交互时间,如果不能直接修改mysql.conf,也可以在执行sql文件中最前面加一句”set interactive_timeout=24*3600″,将执行时间延长。

2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。需要设置一下“通信缓冲区的最大长度”

max_allowed_packet = 100M

PHP操作MongoDB

本教程[翻译自PHP官方手册]

MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料太少了,大部分都是英文文档,于是蜗牛我用蹩脚的英语为大家翻译一下来自PHP官方的文档,水平有限请多多见谅

链接数据库 使用下面的代码创建一个数据库链接

<?php $connection = new Mongo(); //链接到 localhost:27017 $connection = new Mongo( “example.com” ); //链接到远程主机(默认端口) $connection = new Mongo( “example.com:65432″ ); //链接到远程主机的自定义的端口 ?>

现在你可以使用$connection链接来操作数据库了

选择数据库 使用下面的代码来选择一个数据库

<?php $db = $connection->dbname; ?>

这里的数据库并不一定是一个已经存在的数据库,如果所选择的数据库不存在,则会新建一个数据库,所以在选择数据库的时候,注意一定要填上正确的数据库名 如果拼写错误的话,很有可能会新建一个数据库

<?php $db = $connection->mybiglongdbname; //做一些事情 $db = $connection->mybiglongdbnme; //现在会连上一个新的数据库 ?>

获取一个集合 获取一个集合跟选择数据库拥有相同的语法格式

<?php $db = $connection->baz;//选择数据库 $collection = . . . → Read More: PHP操作MongoDB