mysql和sql server的设置优化及使用


mysql

数据库的一些设置

  1. 开放远程登录

    grant all privileges on *.* to 'root'@'%' identified by 'wangshiyi';by后面是密码
    flush privileges; //刷新权限
    

    高版本数据库不能用这个命令要分步执行

    create user 'root'@'%' identified by 'wangshiyi'
    grant all privileges on *.* to 'root'@'%' with grant option;
    flush privileges;刷新权限
    
  2. MySQL GROUP BY 报错设置

	sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

重启mysql服务

如果存储过程还有问题,就修改一下然后重新保存一下存储过程(比如在后面加个空格)
记住以后配置文件需要先改,再转移数据库数据

关于数据库优化

  1. 语句前加EXPLAIN
    执行后会告诉你哪里缺少索引,执行的速度之类的

一些查询

  1. 字段的字符集不匹配
$query->whereRaw("BINARY ".$v['field']." ".$v['condition']." BINARY '".$v['parameter'] . "'");

sql server

一些查询及用法

  1. sql server 时间排序,空时间放前面
$query->orderByRaw("sort desc,case when status_date is null then 1 else 0 end desc,status_date desc")
  1. laravel seqserver存储过程查询报错
    报错:The active result for the query contains no fields.
    在存储过程前加
    set nocount on
    例如
   ALTER PROCEDURE TESTPROC  
   @N INT  
   AS  
   BEGIN   
       SET NOCOUNT ON;   
       IF @N=1    
         RETURN 0;   
       SET NOCOUNT OFF;   
       PRINT '2';  
   END

php查询多结果集

  1. 不带参
$dbh = DB::connection()->getPdo();
$stmt = $dbh->prepare("exec SP_ORDERSEC_GETORDERID");
$stmt->execute();
$stmt->nextRowset();//下一个结果集
$rowset_2 = $stmt->fetch();
//不关闭后面就无法用DB
$stmt = null;//关闭pdo事务连接
$order_id = trim($rowset_2['ORDER_ID']);//第二个结果集
  1. 带参数
$dbh = DB::connection()->getPdo();
$stmt = $dbh->prepare("exec sp_demo_get ?,?,?,?");
$nReturnValue = "参数1";
$strReturnValue = "参数2";
$strSearchValue = "参数3";
$strSearchValues = "参数4";
$stmt->bindParam(1, $nReturnValue, \PDO::PARAM_STR);
$stmt->bindParam(2, $strReturnValue, \PDO::PARAM_STR);
$stmt->bindParam(3, $strSearchValue , \PDO::PARAM_STR);
$stmt->bindParam(4, $strSearchValues , \PDO::PARAM_STR);
$stmt->execute();
$stmt->nextRowset();
$rowset_2 = $stmt->fetch();
$stmt = null;//关闭pdo事务连接
$order_id = trim($rowset_2['k_wage']);//工令单ID,第二个结果集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值