
1、在内层语句首设置set d1=d;,尾设置set d=d1;
避免内查询NOT FOUND时d被设置为1从而退出外循环。
2、将内部语句包含在新的begin…end中
设置DECLARE CONTINUE HANDLER FOR NOT FOUND SET d = 0;
内部查询NOT FOUND时d值仍为0,继续外循环。
eg:
begin
DECLARE d int DEFAULT 0;
declare vid int;
declare vserver_contact_id int;
declare vpersonalemail varchar(100);
declare vmobilenum varchar(32);
DECLARE vuserid int(11) default 0;
declare d1 int;
declare cur CURSOR for
select id,server_contac......
作者: owoer
|
发表于:2016年3月18日
|
栏目:MySQL
|
mysql存储过程游标(嵌套语句互不影响)已关闭评论
阅读全文

mysql共享表空间改为独立表空间
InnoDB 引擎默认会将表数据存储在一个共享空间ibdata1文件内,在增删数据库时,ibdata1文件不会自动收缩,造成不便。
可以在MySQL配置文件[mysqld]增加innodb_file_per_table参数,将共享表空间改为独立表空间。
(MyISAM 引擎会分别创建三个文件:表结构、表索引、表数据空间。)
方法:
1、备份数据库
mysqldump -u root -p –add-drop-table –all-databases > C:\localdb.dmp
如果报如下错误,可加 –ignore-table=mysql.event 参数
— Warning: Skipping the data of ta......
![MySQL空间扩展 GeomFromText(wkt[,srid])](http://www.iswz.net/wp-content/uploads/2012/08/mysql.jpg)
查询:
SELECT `formdocid`, AsText( `UserGeoField1` ) AS `location`
FROM `wfformdoc
新增:`
INSERT INTO `wfformdoc` (`formdocid`,`UserGeoField1`,`locname`) VALUES
( NULL, ( GeomFromText(‘POINT(40.644047 -73.782291) ‘ ) ),’kennedy’)
19.4. 创建具备空间功能的MySQL数据库
19.4.1. MySQL空间数据类型
19.4.2. 创建空间值
19.4.3. 创建空间列
19.4.4. 填充空间列
19.4.5. 获取空间数据
本节介绍了可用于表示MySQL中空间数据的数据类型,以及用于创建和检索空间值的函数......
作者: owoer
|
发表于:2016年1月21日
|
栏目:MySQL
|
MySQL空间扩展 GeomFromText(wkt[,srid])已关闭评论
阅读全文

1、PDO::query
PDO::query执行一条SQL语句,如果通过,则返回一个PDOStatement对象。PDO::query函数有个“非常好处”,就是可以直接遍历这个返回的记录集。
示例如下:
$sql = ‘SELECT name FROM url’;
foreach ($dbh->query($sql) as $row) {
print $row[‘name’] . “\t”;
}
query同传统的mysql query函数类似,同样需要对开发者自行对输入的sql语句进行安全检查。
query因为会返回PDOStament对象,似乎用在SELECT语句执行上更合适,这跟上文提到的query支持直接遍历不谋而合。
query执行后......
作者: owoer
|
发表于:2015年12月26日
|
栏目:MySQL
|
PDO query exec execute已关闭评论
阅读全文

举个例子:
select id from temp where id in (select id from temp1 where id>1000)
这个查询在数据量大时是相当慢的,因为mysql把in里的select当成相关的语句从外到内执行查询,而不是从内到外。
我们可通过临时表来让mysql先执行里面的查询,从而避免巨大的性能开销。
select id from temp where id in (select id from (select id from temp1 where id>1000) as temp3)
其实我们在生产环境中因尽量少使用嵌套查询,尤其是WHERE...IN() 和 WHERE...NOT IN语句。
注:
mysql where是从左向右来执行的,筛选......
作者: owoer
|
发表于:2015年12月21日
|
栏目:MySQL
|
mysql嵌套查询in的优化,where执行顺序已关闭评论
阅读全文