首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MySQL + Drupal:在内部联接中忽略索引

MySQL + Drupal:在内部联接中忽略索引
EN

Stack Overflow用户
提问于 2009-05-18 12:14:46
回答 3查看 1.5K关注 0票数 0

我们的环境: Drupal+MySQL

检查查询日志表明,源自Drupal core的node_load函数的以下查询花费了相当多的时间。

对node_load查询的解释表明,USER表上没有使用该索引。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> explain SELECT n.nid, n.vid, n.type, n.status, n.created, n.changed, 
    n.comment, n.promote, n.sticky, r.timestamp AS revision_timestamp, r.title, 
    r.body, r.teaser, r.log, r.format, u.uid, u.name, u.picture, u.data 
FROM xyz_node n 
INNER JOIN xyz_users u ON n.uid = u.uid 
INNER JOIN xyz_node_revisions r ON r.vid = n.vid;

+----+-------------+-------+--------+---------------+---------+---------+--------------+------+-------------+
| id | select_type | table | type   | possible_keys | key     | key_len | ref          | rows | Extra       |
+----+-------------+-------+--------+---------------+---------+---------+--------------+------+-------------+
|  1 | SIMPLE      | u     | ALL    | PRIMARY       | NULL    | NULL    | NULL         |  181 |             | 
|  1 | SIMPLE      | n     | ref    | vid,uid       | uid     | 4       | xyz.u.uid |    9 | Using where | 
|  1 | SIMPLE      | r     | eq_ref | PRIMARY       | PRIMARY | 4       | xyz.n.vid |    1 |             | 
+----+-------------+-------+--------+---------------+---------+---------+--------------+------+-------------+

你知道这是怎么回事吗,我该如何强制MYSQL在这个查询上使用索引?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-05-18 13:55:15

表的联接顺序不一定与FROM子句中指定的顺序相同。在本例中,看起来MySQL已经决定在查询中没有WHERE子句的情况下,首先扫描users表,然后再将其与其他表连接起来可能是最快的。

我要做的第一件事是对查询中涉及的所有三个表运行ANALYZE TABLE。这将更新表统计信息和存储的键分布,并允许连接优化器做出更好的决策。然后运行EXPLAIN语句,查看它是否发生了更改。

如果它没有改变,您可能需要求助于使用STRAIGHT_JOIN关键字。这将强制联接优化器按照查询中指定的确切顺序联接这些表。为了帮助确定是否应该这样做,应该取EXPLAIN结果中所有rows值的乘积,并将其与查询返回的实际行数进行比较。因此,在本例中,将1629 (181x9x1)与实际行数进行比较。如果它们明显不同,则可能需要一个STRAIGHT_JOIN (用作SELECT的关键字,即.SELECT STRAIGHT_JOIN n.nid...等)。

顺便说一句,有一种方法可以tell MySQL to use a specific index,但我认为它不适用于这个查询中的user表,因为现在没有WHERE子句。如果最终使用的是STRAIGHT_JOIN,则可能需要它,但在这种情况下,如果用户表不是连接中的第一个表,则MySQL可能会选择主键。

您还应该查看EXPLAIN syntax page,了解有关这方面的更多有用的细节。

这个查询看起来并不是很慢。如果没有where子句,您可能会在某个地方进行全表扫描,而MySQL已将检查的总行数减少到大约1700行。这似乎只有当它是一个高使用率的查询时才会有问题,在这种情况下,您可能想要检查底层架构,该架构(没有WHERE子句)涉及运行一个将影响系统中的每个用户的查询,并且只会随着用户的增加而变得更加繁重。

票数 3
EN

Stack Overflow用户

发布于 2009-05-18 13:58:27

由于MySQL在每个查询中只能为每个表使用一个索引,因此您有时可以通过抛出这个看似无用的条件来获得“自由”范围索引扫描。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
WHERE u.uid > 0

尝试在中添加该子句,可能所有表扫描将更改为“范围”,这比全表扫描更好。

票数 1
EN

Stack Overflow用户

发布于 2009-10-03 18:27:22

这会有帮助吗?

在表节点中,在(uid,vid) ALTER TABLE 'xyz_node‘ADD INDEX user_ver ( 'uid,'vid’)上创建索引(注意explain输出中的第二行。在标题“可能的关键字”下..您可以看到vid、uid )

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

https://stackoverflow.com/questions/879576

复制
相关文章
SVG - 动画制作
SVG - 动画制作 HTML5学堂:SVG - 动画制作。上一篇文章讲解了SVG的基本属性,大家能够利用SVG的基本属性进行绘制图像,那么如何让绘制好的图像动起来呢?今天要给大家分享的是SVG的动画制作,具体我们来看看下面的内容吧。 接触过HTML5的人,都知道,Canvas实现一个动画,需要不断的清除画布再重新绘制,如果没有接触过Canvas也不要紧,SVG之后我们紧接着要为大家介绍的就是Canvas。SVG提供了比较方便的API接口,动画实现起来比较方便,具体看看下面的动画命令。 SVG 动画基本命
HTML5学堂
2018/03/12
3.2K0
SVG - 动画制作
[译]SVG动画简介
你可以把这篇文章看做通往精通SVG动画之路的第一步,里面的链接资源也是很好的学习资料。所以赶紧收藏本文然后开始你的精通SVG之旅吧。
小刀c
2022/08/16
1.6K0
[译]SVG动画简介
一篇文章带你了解SVG <Animation> 动画元素
SVG <Animation> 动画元素用于为SVG图形制作动画。动画元素最初是在同步多媒体集成语言(SMIL)中定义的。在动画中,必须指定属性,运动,颜色,动画的开始时间和动画的持续时间的开始和结束值。
前端进阶者
2021/01/22
3K0
SVG 动画精髓
TL;DR 本文主要是讲解关于 SVG 的一些高级动画特效,比如 SVG 动画标签,图形渐变,路径动画,线条动画,SVG 裁剪等。 例如:路径动画 图形渐变: 线条动画: 以及,相关的动画的矩阵知识,
villainhr
2018/07/03
3.4K0
【Web动画】SVG 线条动画入门
通常我们说的 Web 动画,包含了三大类。 CSS3 动画 javascript 动画(canvas) html 动画(SVG) 个人认为 3 种动画各有优劣,实际应用中根据掌握情况作出取舍,本文讨论
Sb_Coco
2018/05/28
2.3K0
SVG与foreignObject元素
可缩放矢量图形Scalable Vector Graphics - SVG基于XML标记语言,用于描述二维的矢量图形。作为一个基于文本的开放网络标准,SVG能够优雅而简洁地渲染不同大小的图形,并和CSS、DOM、JavaScript等其他网络标准无缝衔接。SVG图像及其相关行为被定义于XML文本文件之中,这意味着可以对其进行搜索、索引、编写脚本以及压缩,此外这也意味着可以使用任何文本编辑器和绘图软件来创建和编辑SVG。
WindRunnerMax
2023/08/13
5540
SVG 动画精髓(下)
本文作者:ivweb villainthr 接SVG 动画精髓(上) 线条动画 SVG 中的线条动画常常用作过渡屏(splash screen)中。例如: 或者,一些比较炫酷的 LOGO 中,比如
腾讯IVWEB团队
2017/07/07
1.8K0
SVG 动画精髓(下)
SVG 动画精髓(上)
本文作者:ivweb villainthr TL;DR 本文主要是讲解关于 SVG 的一些高级动画特效,比如 SVG 动画标签,图形渐变,路径动画,线条动画,SVG 裁剪等。 例如:路径动画 图形
腾讯IVWEB团队
2017/07/06
3.6K0
SVG 动画精髓(上)
【Web动画】SVG 实现复杂线条动画
在上一篇文章中,我们初步实现了一些利用基本图形就能完成的线条动画: 【Web动画】SVG 线条动画入门 当然,事物都是朝着熵增焓减的方向发展的,复杂线条也肯定比有序线条要多。 很多时候,我们无法人工去
Sb_Coco
2018/05/28
1.9K0
随便做的svg动画
2. 以上情况下atrributeName = "height"会被微信公众号的富文本编辑器过滤掉(出现在百叶窗那个例子中)
用户3258338
2021/01/04
1.1K0
随便做的svg动画
初窥 SVG Path 动画
本文讨论的主题是 SVG Path 动画(路径动画)。之所以要讨论这个话题,是因为在项目中有要求用到它。所谓 SVG Path 动画,就是让图形有像人实时绘制一样的动画效果,就比如下面这种:
IMWeb前端团队
2019/12/04
2.1K0
初窥 SVG Path 动画
初窥 SVG Path 动画
本文主要介绍了如何使用 SVG Path 实现绘制可循环播放的动画,包括动画的起点、终点和循环路径,以及如何使用 CSS3 的 keyframes 和 animation 实现动画效果。同时,还介绍了一些 SVG Path 的常见属性,包括 stroke-dasharray、stroke-dashoffset 等,以及如何通过修改这些属性来实现动画效果。
IMWeb前端团队
2017/12/29
2.9K0
初窥 SVG Path 动画
HTML动画分类 HTML5动画 SVG库 SVG工具 Canvas动画工具
1、js配合传统css属性控制,可以使用setTimeout或者高级的requestAnimationFrame
用户1258909
2018/07/24
3.7K0
SVG滤镜波浪动画效果
今天给大家分享一个用SVG实现的滤镜波浪动画效果,效果如下: 以下是代码实现,欢迎大家复制粘贴和收藏。 <!DOCTYPE html> <html lang="en"> <head> <me
越陌度阡
2020/11/26
9740
SVG滤镜波浪动画效果
SVG 路径动画简易指南
任何有开发经验的前端工程师都会考虑到不成体系的设备生态所带来的挑战。设备间不同的屏幕尺寸、分辨率和比例使得产品难以提供一致的体验,对于那些对产品有着像素级完美追求的人这种体验差异尤其显著! SVG(可缩放的矢量图形)完美地解决了上文中提到的部分问题。尽管 SVG 有它的局限性,但是在某些场景下是非常有用的,如果你有一个好的设计团队,你也可以基于SVG创建一些震撼的视觉体验,而不必担心给浏览器带来过重的渲染负担或阻碍页面的加载时间。
疯狂的技术宅
2019/03/27
3.6K0
SVG 路径动画简易指南
SVG 文字sin型曲线动画
先上图: 未命名项目.gif 代码实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <ti
张风捷特烈
2018/09/26
1.6K0
SVG 线条动画基础入门知识
1、CSS3 动画 2、javascript 动画(canvas) 3、html 动画(SVG)
Javanx
2019/09/04
2.9K0
SVG 线条动画基础入门知识
元素的动画
转换(transform),也称变形。就是改变元素在页面中的位置,大小,角度以及形状。
云叶知秋
2023/10/16
1490
元素的动画
【案例】SVG卡通赛车加载动画特效
点击上方[我分享我快乐]→[...]右上角→[设为星标⭐]即可第一时间获取最新设计资源
用户1730674
2020/05/22
8980
【案例】SVG卡通赛车加载动画特效
带你轻松打开SVG动画的大门
初学SVG的时候,感觉那一坨一坨的代码难读难懂,现在回过头仔细想想,是因为那时候看文档缺少一些具体的实例,导致学习起来很枯燥。如今SVG已经在前端各个领域都有所作为,无论是项目里的应用还是demo
练小习
2017/11/30
9000

相似问题

jQuery动画SVG元素

21

svg同步动画元素

12

SVG动画丢弃元素

115

动画SVG路径元素

12

JavaScript SVG连续添加动画元素到SVG元素

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文