mysql中,下面哪种查询效率比较高?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中,下面哪种查询效率比较高?相关的知识,希望对你有一定的参考价值。

一:

$notDealEmailArr=$elanw_client_caiji->getObjectList("select cId from elanw_client_caiji where type=2 and addtime<='".$time."'");//审核未通过且14天以前的数据
foreach($notDealEmailArr as $k=>$v)
$cUser=$elanw_client->select('cId='.$v['cId'],'cUser');//获取业务员
$isUser=$userinf->select("name='".$cUser['cUser']."' and forbid<>'yes' and joinstate <>2",'name');//判断业务员是否是正式用户
if($isUser)
$updateArr= array(
array("columnName"=>"cUser","columnValue"=>'wbpub'),
);
$elanw_client->update($updateArr,"cId=".$v['cId']);//转入外部资源库

$updateArr2= array(
array("columnName"=>"type","columnValue"=>'0'),
);
$elanw_client_caiji->update($updateArr2,"cId=".$v['cId']);//审核状态变为待审核


二:
$idArr=$elanw_client->getList('allList', "and cId in(select cId from elanw_client_caiji where type=2 and addtime<='$time') and cUser in(select name from userinf where forbid<>'yes' and joinstate <>2)",'','', '', array('fields'=>'cId'),'');//获取14天前审核不通过的且已被领取的数据
foreach($idArr as $k=>$v)
$updateArr= array(
array("columnName"=>"cUser","columnValue"=>'wbpub'),
);
$elanw_client->update($updateArr,"cId=".$v['cId']);//转入外部资源库

$updateArr2= array(
array("columnName"=>"type","columnValue"=>'0'),
);
$elanw_client_caiji->update($updateArr2,"cId=".$v['cId']);//审核状态变为待审核

直接说下面哪种查询比较好啊
法一:
$A=query(select name from tableA where id in(select id from tableB where logintime<='2016-04-21 14:20:00'));

法二:
$B=query(select id from tableB where logintime<='2016-04-21 14:20:00');
foreach($B as $v)
$C=query(select name from tableA where id=$v['id']);

-- 如果是单纯的SQL
SELECT a.name FROM tableA a LEFT JOIN tableB b ON A.id = b.id AND b.logintime<='2016-04-21 14:20:00';

-- 方法一 这种嵌套 尽量少用
-- 方法二 过多的查询 尽量少用

-- 不过总的来看 这些查询都要根据具体业务和实际情况来查询的

参考技术A 当然是第一种,第二种程序与数据库交互多次,效率肯定比第一种慢本回答被提问者和网友采纳

MySQL数据表遍历问题

如果我想在MySQL中遍历数据表中的所有字段,用什么方法比较高效?
通过程序或者是Procedure都可以,能高效遍历每条数据的每个字段信息就行,请问是否需要使用策略提升效率?数据量一般,哪种方法比较快?

参考技术A mysql的INFORMATION_SCHEMA中的COLUMNS记录所有字段的信息。
可以直接查询这个表就可以。
例:查询所有字段的名称:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS;
查询某表(a)所有字段的名称:
select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='a';
参考技术B 数据量一般就直接遍历,既然都说了是遍历还提什么效率?
只是用php操作的时候,最好逐条,不要一次全取,否则可能造成内存超限本回答被提问者采纳
参考技术C 程序?还是存储过程? 参考技术D 循环

以上是关于mysql中,下面哪种查询效率比较高?的主要内容,如果未能解决你的问题,请参考以下文章

SQL中,多表连接查询和不相关子查询从查询效率上来说,哪种查询的效果更好?为啥 ?

那个mysql 子查询和连接查询 一般常用哪个 谁效率高些

1亿条数据批量插入 MySQL,哪种方式最快

MYSQL学习笔记之索引

MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?

JAVA中List的三个子类。