thinkphp使用force

如何在tp的链式操作里使用mysql的强制索引函数(FORCE)呢?

开始以为tp不支持该函数,还打算用原生sql,结果看了数据库操作类,发现原来已有封装;

如下:这里我举例说tp3.2.3;

    /**
     * index分析,可在操作链中指定需要强制使用的索引
     * @access protected
     * @param mixed $index
     * @return string
     */
    protected function parseForce($index) {
        if(empty($index)) return '';
        if(is_array($index)) $index = join(",", $index);
        return sprintf(" FORCE INDEX ( %s ) ", $index);
    }

那么如何使用呢?

很简单,代码如下:

    if(count($Sub_list) == 0){
        $Map['cid'] = array('EQ',0); 
    }else{
        $Map['uid'] = array('in',$Sub_list); 
    }
    $Map['is_high_seas'] = array('EQ',0);//非公海客户
    $Map['is_remove']    = array('EQ',0);//非移除客户
    $Count = $this ->Customer_Model ->force('customer_count') ->where($Map) ->count("*"); 

注:force括号里写要强制使用的索引名称就可以了。

最后getLastsql()发现果然使用了customer_count索引,哈哈!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值