- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
表(innodb):
学生-400.000线(35.000线未激活)
40000线
学生班-460000线
查询:
SELECT S.*
FROM STUDENT S
JOIN CLASS_STUDENT CS ON CS.STUDENT_ID = S.STUDENT_ID
JOIN CLASS C ON C.CLASS_ID = CS.CLASS_ID
WHERE S.ACTIVE = TRUE
GROUP BY S.STUDENT_ID --this suffices to fetch students only once
ORDER BY C.CLASS_DATE DESC --datetime field
LIMIT 0,5
ORDER BY
:3.2297秒
ORDER BY
的执行时间:0.0015秒
ORDER BY
加速这个查询?
LIMIT
用于分页。我是按描述排序的,因为我想先在我的分页结果中看到最近上课的学生。
CLASS_DATE
两个查询:
EXPLAIN
=4gb,我的服务器有16gb
最佳答案
如果这是我的项目,我只列出每个学生一次。不是多次,为注册(CLASS_STUDENT
)表中的每一行重复学生。
我将认真考虑通过向STUDENT
表中添加派生列来取消数据库实现的规范化,例如。
ALTER TABLE STUDENT ADD latest_class_date DATE DEFAULT NULL;
UPDATE STUDENT t
LEFT
JOIN ( SELECT cs.student_id
, MAX(c.class_date) AS latest_class_date
FROM CLASS_STUDENT cs
JOIN CLASS c
ON c.class_id = cs.class_id
GROUP BY cs.student_id
) s
ON t.student_id = s.student_id
SET t.latest_class_date = s.latest_class_date
... ON STUDENT (active, latest_class_date, student_id)
SELECT s.*
FROM student s
WHERE s.active = 1
ORDER BY s.active DESC, s.latest_class_date DESC, student_id DESC
LIMIT 5
student_id
包含在
ORDER BY
中,以使结果具有确定性。(如果没有,mysql可以按任意顺序返回任何
latest_class_date
相同的行。)
SELECT s.*
FROM student s
WHERE s.active = 1
AND s.latest_class_date <= ?
AND (s.latest_class_date < ? OR s.student_id < ? )
ORDER BY s.active DESC, s.latest_class_date DESC, student_id DESC
LIMIT 5
latest_class_date
列的内容。有几个选择。
latest_class_date
和
CLASS
表中添加/更改/删除行时,都会填充
STUDENT_CLASS
列,或者
BEFORE INSERT/UPDATE
触发
STUDENT
AFTER INSERT/UPDATE/DELETE
触发
CLASS_STUDENT
AFTER INSERT/UPDATE/AFTER DELETE
触发
CLASS
CLASS_STUDENT
中的行时,由于外键的级联操作而从
CLASS
中删除行,则只会触发
CLASS
表的触发器。这意味着我必须在
CLASS
表的delete触发器中处理所需的操作。)
CLASS_STUDENT
)表中有多行时返回的重复学生行。我们想让同一个学生多次返回吗?或者,我们是否要多次返回学生行,对于具有相同
CLASS_STUDENT
的类,为
class_date
中的每一行返回一次。或者,我们是否只想返回学生行一次,并且只返回一个
CLASS
中的信息?如果我们为一个学生返回多行,是打算每页列出五个学生,还是每页列出五个学生班?
student class class_date
------- ----- ----------
Sam phys 2016-02-12
Sam calc 2016-02-12
Mary lit 2016-02-12
Mahatma art 2016-02-12
Paul music 2016-02-11
Paul engl 2016-02-11
Sam art 2016-02-10
...
GROUP BY student_id
。(我们假设
student_id
在
students
表中是唯一的。)
CLASS_STUDENT
表中有多行,并且这些相关的
CLASS
行具有不同的
class_date
值,则原始查询中返回的
class_date
值是不确定的。mysql可以自由选择任何可能的
class_date
值。(不仅仅是
class_date
栏……
CLASS
和
CLASS_STUDENT
中的行的值是不确定的。)
student class_date
------- ----------
Sam 2016-02-22
Sam 2015-07-17
Paul 2016-01-11
Sam
之前使用
Paul
或
Sam
之后使用
Paul
对行进行排序。两个结果都对原始查询有效。而且不能保证每次运行查询的结果都是相同的。结果是不确定的。
ONLY_FULL_GROUP_BY
中包含
sql_mode
,可以使mysql的行为与其他数据库相同,并引发错误。
SELECT d.*
FROM ( SELECT s.student_id
, s.latest_class_date
FROM student s
WHERE s.active = 1
AND s.latest_class_date <= ?
AND ( s.latest_class_date < ? OR s.student_id < ? )
ORDER BY s.active DESC, s.latest_class_date DESC, student_id DESC
LIMIT 5
) r
JOIN student d
ON d.student_id = r.student_id
JOIN class_student e
ON e.student_id = d.student_id
JOIN class c
ON c.class_id = e.class_id
AND c.class_date = r.latest_class_date
GROUP BY d.student_id
关于mysql - MySQL - 简单的订单表现不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35350554/
我正在用 C++ 开发一个程序,我必须实现一个 cron。由于不同的原因,这个 cron 应该每小时和每 24 小时执行一次。我的第一个想法是创建一个独立的 pthread 并在每次 1h 内休眠。这
我需要向同一场景几何添加多个体素(立方体等于),但每个体素具有不同的纹理。 我的体素超过 500 个,导致性能出现严重错误。 这是我的代码: texture = crearTextura(voxel.
对于 MySQL 数据库,我有 2 个场景,我不确定该选择哪一个,并且对于一些表我也遇到了同样的困境。 我正在制作一个仅供成员(member)访问的网络应用程序。每个成员都有自己的交易、费用和“列表”
我想知道一个简单的事情: 当设置一个被所有 child 继承的样式时,是否建议最具体? Structure: html > body > parent_content > wrapper > p 我想
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
这些天我正在阅读有关 JPA 的内容。我了解到可以在 JPQL 中使用 explicit 或 implicit JOIN。 显式加入 em.createQuery(“SELECT b.title, p
我有一种情况需要连接几个字符串以形成一个类的 id。基本上,我只是在列表中循环以获取对象的 ToString 值,然后将它们连接起来。 foreach (MyObject o in myList)
我正在检查我的游戏在拖尾效果下的性能会降低多少。但我注意到每秒的操作次数更多了。这怎么可能? 这是怎么回事... context.fillRect(0, 0, 500, 500); // cl
如果我可以选择使用全局变量或传递变量,哪个选项在速度和内存使用方面更好? // global variable function func(){ global $var; echo $var;
我有一个类似这样的表“tbl”:ID bigint(20) - 主键,自增字段1字段2字段3 该表有 60 万多行。 查询:SELECT * from tbl ORDER by ID LIMIT 60
谁能告诉我,我如何比较 TSP 最优和启发式算法?我已经实现了 TSP,但不知道如何比较它们。事实上,我怎样才能找到 TSP 的最优成本?有什么方法或猜测吗? 谢谢 最佳答案 用众所周知的基准实例检查
我有一个 NSTextStorage里面有长文本(比如一本书有 500 页,当前字体在设备上超过 9000 页)。我以这种方式为 textcontainer 分发此文本: let textStorag
我有一个根据邮政编码搜索项目的应用程序。 在搜索邮政编码时,我返回了来自该城市/社区的所有产品(通过解析邮政编码完成)。 我现在需要根据与原始邮政编码的距离对这些产品进行分类。 我将纬度/经度存储在数
我有许多进程(大约100到1000个进程),每个进程都必须向其他进程(例如大约10个)发送一些数据。 (通常,但不一定总是这样,如果A发送给B,B也发送给A。)每个进程都知道必须从哪个进程接收多少数据
我知道无状态组件使用起来更舒服(在特定场景下),但是既然你不能使用shouldComponentUpdate,这是否意味着组件将在每次props更改时重新渲染?我的问题是,使用带有智能 shouldC
我正在研究 Google Pagespeed 的加速页面加载时间指南列表。其中之一是缩小 CSS 和 JS 文件。 由于这些文件经常更改,我正在考虑使用 PHP 脚本根据请求(来自浏览器)即时缩小此脚
我正在尝试从下表构建 SQL 查询(示例): Example of table with name "performances" 这是带有运动表现的表格。我想从这个表中选择每个学科和一组一个或多个类别
假设我们有一个字符串 var "sA",我想检查字符串 "123"是否在 sA 的末尾。 什么更好,为什么: if(sA.length() > 2) sA.substr(sA.length()-3)
关于受这篇文章启发的可参数化查询 LINQ group by property as a parameter我获得了一个很好的参数化查询,但在性能上有一个缺点。 public static void
| 和| 之间有什么主要区别吗?和 + 从长远来看会影响代码的性能吗?或者都是 O(1)?我正在使用的代码是这样的: uint64_t dostuff(uint64_t a,uint64_t b){
我是一名优秀的程序员,十分优秀!