当前位置:Gxlcms > 数据库问题 > ThinkPHP5查询当前表引擎,以及InnoDB表引擎下count(*)查询效率低的问题

ThinkPHP5查询当前表引擎,以及InnoDB表引擎下count(*)查询效率低的问题

时间:2021-07-01 10:21:17 帮助过:47人阅读

xmsb_getCountField($tableName) { $dataBase = config(‘database.database‘); $tableDDL = Db::query("SHOW TABLE STATUS FROM `{$dataBase}` WHERE name = ‘{$tableName}‘"); // 获取表信息 $engine = strtolower($tableDDL[0][‘Engine‘]); // 取得表引擎信息 // 取得主键字段 $pk = DB::getTableInfo($tableName, ‘pk‘); if(is_array($pk)) $pk = $pk[0]; // 若表引擎为InnoDB则判断是否存在非主键索引 if($engine == ‘innodb‘) { $indexs = Db::query("SHOW INDEX FROM {$tableName}"); $key = $pk; foreach($indexs as $index) { // 若存在非主键索引,则返回该索引对应的字段 if($index[‘Key_name‘] != ‘PRIMARY‘) { $key = $index[‘Column_name‘]; break; } } return $key; } else { // 非InnoDB引擎则直接返回主键字段 return $pk; } } $count = Db::name(‘数据表名‘) -> count(xmsb_getCountField(‘完整数据表名‘));

ThinkPHP5查询当前表引擎,以及InnoDB表引擎下count(*)查询效率低的问题

标签:prim   环境   代码   实时   一个   针对   thinkphp5   时间   php5   

人气教程排行