目次
回复内容:
ホームページ バックエンド開発 PHPチュートリアル 对于两个表,一般是直接关联还是分两次查出来再关联

对于两个表,一般是直接关联还是分两次查出来再关联

Jun 06, 2016 pm 08:40 PM
join mysql php

对于两个表,一般是直接关联还是分两次查出来再关联,比如用户表,用户学历表

<code>$user_ids = query(select id from users);
$background = query('select * from background where uid in '.implode(',',$user_ids));
</code>
ログイン後にコピー
ログイン後にコピー

需要这样吗?直接关联不行吗,这样多一次连接,让php来join能减少数据库的压力吗?
如果是别的表,比如业务特别繁忙或业务一般繁忙的,是不是也要区分对待?

回复内容:

对于两个表,一般是直接关联还是分两次查出来再关联,比如用户表,用户学历表

<code>$user_ids = query(select id from users);
$background = query('select * from background where uid in '.implode(',',$user_ids));
</code>
ログイン後にコピー
ログイン後にコピー

需要这样吗?直接关联不行吗,这样多一次连接,让php来join能减少数据库的压力吗?
如果是别的表,比如业务特别繁忙或业务一般繁忙的,是不是也要区分对待?

没测过。不过:

  1. 数据库轻松了,你的 PHP 程序任务更繁重了。毕竟联表查询什么的数据库更专业。
  2. 增加网络数据传输。
  3. 如果你取得的数据条数很多,你的 PHP 得生成好大一个字符串往数据库传呢。然后数据库还得再花内存和 CPU 解析一遍。如果你的 id 比较复杂,你还可能弄错。
  4. 如果在两次查询之间的数据变动导致其结果与一次联表查询结果不一致,会影响你的业务逻辑吗?

如果访问量够大,这样做确实能减少数据库压力,但是这样会增加复杂度,不建议过早优化。

对sql资源进行管理,设计成配置文件那样,提供占位符;
设计一个parser模块,获取参数,替换占位符;
执行查询,返回结果,也可以传入类型,对查询结果做反射处理;

联合查询比较好,毕竟分开查就进行了两次io操作

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

MySQL 8.4 (2024 年時点の最新の LTS リリース) で導入された主な変更の 1 つは、「MySQL Native Password」プラグインがデフォルトで有効ではなくなったことです。さらに、MySQL 9.0 ではこのプラグインが完全に削除されています。 この変更は PHP および他のアプリに影響します

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

See all articles