社区首页 >问答首页 >优化MySQL查询所需的建议

我在PHP中使用参数化查询,我有以下两个查询:

代码语言:javascript
代码运行次数:0
复制
SELECT username,question_text 
FROM questions,users 
WHERE questions.question_id = 4 AND questions.user_id = users.user_id

代码语言:javascript
代码运行次数:0
复制
SELECT username, post_text 
FROM posts,users WHERE posts.question_id = 4 
AND posts.user_id = users.user_id ORDER BY posts.post_id ASC

简而言之,这些问题在"posts“表中被讨论,并被他们的question_id引用。

我的PHP代码中有一些冗余代码,因为我不了解足够的mysql来查询数据库一次,从而从这两个查询中获得所需的结果。

我做得很好并处理PHP代码中的冗余部分,还是有更好的方法来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-20 10:19:00

在where子句中使用join而不是匹配列

代码语言:javascript
代码运行次数:0
复制
SELECT username,question_text 
FROM questions INNER JOIN users on questions.user_id = users.user_id
WHERE questions.question_id = 4

代码语言:javascript
代码运行次数:0
复制
SELECT username, post_text 
FROM posts INNER JOIN users on posts.user_id = users.user_id 
WHERE posts.question_id = 4 
ORDER BY posts.post_id ASC
票数 2
EN

Stack Overflow用户

发布于 2010-10-20 10:16:33

2个查询是完全可以的,组合来自多个表的输出并不是非常干净的想法。

您只需要检查在WHERE中使用的所有字段上是否有所有组合索引,这将非常快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3976688

复制
相关文章
Android异步任务
Android 异步任务队列实现AsynTask异步任务源代码解析 android异步任务 访问网络 加载图片 解决方案大集合 Android异步消息处理机制的源码分析 AsyncTask异步从网上下载图片 线程基本概念及编程 给 Android 开发者的 RxJava 详解 Android多线程编程的总结    ***************** 关于android中postDelayed方法的讲解 - 如是观的专栏 - 博客频道 - CSDN.NET 详细介绍AIDL 的使用 -
用户1733354
2018/05/22
7430
android异步任务asyntask详解
在Android中实现异步任务机制有两种方式,Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行时,不易对线程进行精确的控制。关于Handler的相关知识,前面也有所介绍,不清楚的朋友们可以参照一下。 为了简化操作,Android1.5提供了工具类android.os.AsyncTask,它使创建异步任务变得
xiangzhihong
2018/01/30
1.1K0
android异步任务asyntask详解
在Android中调用WebService
某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。 既然是调用WebService
全栈程序员站长
2022/07/05
1.9K0
在Android中调用WebService
某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。 既然是调用WebService
欢醉
2018/01/22
2.3K0
Android系列之异步任务AsyncTask
       Android4.0之后,网络访问这些都是要放在自己开的线程里,然后在主线程里进行访问的。就我所知的有两种方法。一种是自己new一个线程,然后通过Handler机制进行访问;另外一种是用异步任务AsyncTask的方法。
SmileNicky
2022/05/07
3350
【Android 异步操作】AsyncTask 异步任务 ( AsyncTask 异步任务执行方法 execute 方法相关源码解析 )
上一篇博客中 【Android 异步操作】AsyncTask 异步任务 ( 参数简介 | 方法简介 | 使用方法 | AsyncTask 源码分析 ) , 讲解了 AsyncTask<Params, Progress, Result> 异步任务的构造函数 ;
韩曙亮
2023/03/28
4710
【Android 异步操作】线程池 ( Worker 简介 | 线程池中的工作流程 runWorker | 从线程池任务队列中获取任务 getTask )
在博客 【Android 异步操作】线程池 ( 线程池 execute 方法源码解析 ) 中 , 讲解 线程池 ThreadPoolExecutor 的 execute 方法时 , 有两个重要的核心方法 ;
韩曙亮
2023/03/28
7950
如何取消 JavaScript 中的异步任务
有时候执行异步任务可能是很困难的,尤其是在特定的编程语言不允许取消被错误启动或不再需要的操作时。幸运的是 JavaScript 提供了非常方便的功能来中止异步活动。在本文中,你可以学到如何创建可中止的函数。
疯狂的技术宅
2020/03/26
3.3K0
如何取消 JavaScript 中的异步任务
springBoot异步任务、异步监控
除了自己实现线程外,springBoot本身就提供了通过注解的方式,进行异步任务的执行。下面主要记录一下,在springBoot项目中实现异步任务,以及对异步任务进行封装监控。
xcbeyond
2020/04/02
1.2K0
在现代 JavaScript 中编写异步任务[每日前端夜话0xDD]
在本文中,我们将探讨过去异步执行的 JavaScript 的演变,以及它是怎样改变我们编写代码的方式的。我们将从最早的 Web 开发开始,一直到现代异步模式。
疯狂的技术宅
2019/11/03
2.4K0
springboot任务之异步任务
此时我们启动服务器,并输出localhost:8080/hello,会在3s之后响应的success。
西西嘛呦
2020/08/26
4420
SpringBoot异步任务
在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x之后,就已经内置了@Async来完美解决这个问题。
别团等shy哥发育
2023/02/25
3600
SpringBoot异步任务
.Net中异步任务的取消和监控
OperationCanceledException 令牌被取消时抛出的异常,可以由监听者自主决定是否抛出异常
蓝夏
2021/09/09
7990
异步任务中的重新进入(Reentrancy)
2017-12-05 14:10
walterlv
2018/09/18
6400
【Android 异步操作】Handler 机制 ( MessageQueue 空闲任务 IdleHandler 机制 )
在上述如果取出的 mMessage 消息为空 mMessages == null , 则执行 IdleHandler ;
韩曙亮
2023/03/28
7830
Android中Services之异步IntentService
IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务。 IntentService有以下特点: (1)  它创建了一个独立的工作线程来处理所有的通过onStartCommand()传递给服务的intents。 (2)  创建了一个工作队列,来逐个发送intent给onHandleIntent()。 (3)  不需要主动调用stopSelft()来结束服务。因为,在所有的intent被处理完后,系统会自动关闭服务。 (4
欢醉
2018/01/22
6790
【Android Gradle 插件】自定义 Gradle 任务 ⑯ ( 从任务容器 TaskContainer 中搜索 Gradle 任务 | 压缩 packageDebug 任务输出文件 )
org.gradle.api.Project 配置 ( build.gradle 根配置 ) 文档 : https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html
韩曙亮
2023/03/30
7290
【Android Gradle 插件】自定义 Gradle 任务 ⑯ ( 从任务容器 TaskContainer 中搜索 Gradle 任务 | 压缩 packageDebug 任务输出文件 )
点击加载更多

相似问题

Grails分离条件查询和"group by“和"having”子句

12

使用group和having子句

43

group by和having子句发布

50

Oracle : GROUP和HAVING子句

45

LINQ Group by和having where子句

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档