首页
学习
活动
专区
圈层
工具
发布

实战演练:通过伪列、虚拟列实现SQL优化

本文是技术同仁 蔡亮 在日常工作中通过试验,总结出的一些技巧方案,供大家参考学习。在此,感谢蔡亮的供稿分享,希望大家也可以后续将学习工作中遇到的问题,解决方法分享给大家。...一.通过伪列、虚拟列实现SQL优化 慢 SQL 文本如下: ? SQL 执行时长达 38S,获取 361 条数据结果返回。 SQL 执行计划如下: ?...MySQL 5.7 增加了虚拟列的新功能,可以类似的实现 Oracle 函数索引。由此思路,month_show_data 增加虚拟列 vr_time,并添加虚拟列索引 idx_vr_time。...伪列实现SQL优化 由数据量、表之间的关联关系及返回的结果集推断可知,只有在 minute_time 和 month_show_data 分别过滤后,再对符合条件的结果集进行关联才是最优的执行计划,而由前面的分析可知...伪列的引入,可以强制 SQL 改变表之间的关联顺序,获得想要的执行计划。将 SQL 改写成如下方式: ? SQL 在 0.004s 之后即返回查询结果。 执行计划如下: ?

2.1K31

Java 中的伪异步 IO

本文简单介绍 Java 中的 伪异步 IO 知识。 1 伪异步 IO 通信模型 伪异步 IO 通信模型如下图所示: ?...上篇文章中 Java BIO 认识 介绍了 BIO 的弊端,就是服务端会对每个客户端的请求单独创建一个线程来处理,这样子很浪费资源,特别是高并发的时候,资源容易被耗尽导致宕机。...伪异步 IO 通过使用线程池来优化 BIO,只是解决线程不过多的创建这个问题,没有解决阻塞 IO,所以被称为伪异步 IO。...3 伪异步 IO 弊端 伪异步解决了 BIO 的资源占用问题,但是依旧没有解决 IO 阻塞问题,因为 InputStream 中的 read() 方法读取数据时,它是一直阻塞的,直到发生有数据可读、...OutputStream 中的 write() 方法也是阻塞的。 做个有梦想的程序猿

1.4K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java 中的伪共享详解及解决方案

    什么是伪共享 CPU 缓存系统中是以缓存行(cache line)为单位存储的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。...在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。 2....缓存行 由于共享变量在 CPU 缓存中的存储是以缓存行为单位,一个缓存行可以存储多个变量(存满当前缓存行的字节数);而CPU对缓存的修改又是以缓存行为最小单位的,那么就会出现上诉的伪共享问题。...Java 对于伪共享的传统解决方案 /*** * 微信公众号:Java技术栈 **/ import java.util.concurrent.atomic.AtomicLong; public final...Java 8 中的解决方案 Java 8 中已经提供了官方的解决方案,Java 8 中新增了一个注解: @sun.misc.Contended。

    75530

    CSS中的伪类和伪元素

    伪元素 伪元素是一个附加至选择器末的关键词,允许你对被选择元素的特定部分修改样式。 下例中的 ::first-line 伪元素可改变段落首行文字的样式。 /* 每一个 元素的第一行。...*/ p::first-line { color: blue; text-transform: uppercase; } 伪类连同伪元素一起,他们允许你不仅仅是根据文档 DOM 树中的内容对元素应用样式...这个时候,被修饰的 元素依然处于文档树中。... p:first-letter { font-size: 5em; } 从上述例子中可以看出,伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档数外的元素。...总结 1.伪类本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息; 2.伪元素本质上是创建了一个有内容的虚拟容器; 3.CSS3中伪类和伪元素的语法不同; 4.可以同时使用多个伪类,而只能同时使用一个伪元素

    4K10

    CSS中伪类与伪元素,你弄懂了吗?

    伪类与伪元素 先说一说为什么css要引入伪元素和伪类,以下是css2.1 Selectors章节中对伪类与伪元素的描述: CSS introduces the concepts of pseudo-elements...直译过来就是:css引入伪类和伪元素概念是为了格式化文档树以外的信息。也就是说,伪类和伪元素是用来修饰不在文档树中的部分,比如,一句话中的第一个字母,或者是列表中的第一个元素。...虽然用户可以看到这些文本,但是这些文本实际上不在文档树中。 伪类与伪元素的区别 这里通过两个例子来说明两者的区别。... p:first-letter { font-size: 5em; } 从上述例子中可以看出,伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档数外的元素。...伪元素是使用单冒号还是双冒号 CSS3规范中的要求使用双冒号(::)表示伪元素,以此来区分伪元素和伪类,比如::before和::after等伪元素使用双冒号(::),:hover和:active等伪类使用单冒号

    1.6K10

    CSS中的伪类

    CSS中的伪类 引言 CSS(Cascading Style Sheets,层叠样式表)是Web开发中不可或缺的一部分。它用于控制网页的外观和布局,使得网页不仅功能强大,还具有吸引力。...在CSS中,伪类(Pseudo-classes)是一种强大的工具,能够选择和样式化那些在普通选择器无法触及的元素状态或特性。本文将深入探讨CSS中的伪类,分析其重要性、应用场景和具体实现方法。...伪类的实现步骤和流程 解析CSS选择器:浏览器解析CSS文件,识别选择器中的伪类。 匹配元素:浏览器在文档中查找符合伪类条件的元素。 应用样式:将伪类选择器的样式规则应用到匹配的元素上。...行业趋势与未来展望 当前行业中的地位 CSS伪类在现代Web开发中占据重要地位,广泛应用于各种项目中。随着CSS标准的不断发展,伪类的功能和种类也在不断扩展。...结论 本文详细探讨了CSS中的伪类,包括其基本概念、核心原理、常见伪类、高级伪类、性能优化、安全考量和实际应用案例。伪类是CSS中强大的工具,能够选择和样式化那些在普通选择器无法触及的元素状态或特性。

    1.3K10

    Java Review - 并发编程_伪共享

    文章目录 what's 伪共享 为何会出现伪共享 如何避免伪共享 小结 what’s 伪共享 为了解决计算机系统中主内存与CPU之间运行速度差问题,会在CPU与主内存之间添加一级或者多级高速缓冲存储器(...为何会出现伪共享 伪共享的产生是因为多个变量被放入了一个缓存行中,并且多个线程同时去写入缓存行中不同的变量。 那么为何多个变量会被放入一个缓存行呢?...如何避免伪共享 在JDK 8之前一般都是通过字节填充的方式来避免该问题,也就是创建一个变量时使用填充字段填充该变量所在的缓存行,这样就避免了将多个变量存放在同一个缓存行中。...在默认情况下,@Contended注解只用于Java核心类,比如rt包下的类。如果用户类路径下的类需要使用这个注解,则需要添加JVM参数:-XX:-RestrictContended。...小结 我们这里主要讲述了伪共享是如何产生的,以及如何避免,并证明在多线程下访问同一个缓存行的多个变量时才会出现伪共享,在单线程下访问一个缓存行里面的多个变量反而会对程序运行起到加速作用。

    46920

    【数据结构】考研408 | 伪随机探测与双重散列精讲:散列的艺术与均衡之道

    答案是肯定的,这就是我们今天要介绍的 伪随机数法 以及 双散列法。...…… 当发生冲突时,按照 伪随机序列 去进行 循环探测 ,直到找到 空闲地址; 熟悉 C 语言的小伙伴应该都知道,在 C 的标准库中存在着一个 伪随机函数 —— rand() ,它的作用就是生成一个...双散列法 的 哈希函数 形式为: H_i = (Hash_1(key) + i * Hash_2(key)) \bmod m 2.1 哈希函数的设计 在 双散列法 中,我们需要准备两个 哈希函数: $$...线性探测法、平方探测法、伪随机序列法 一致,其查找的过程中,按查找是否成功可以分为两大类: 查找成功:通过 双散列函数 成功在表中找到了 目标关键字 查找失败:通过 双散列函数 在表中未能找到 目标关键字...结语 在今天的内容中我们介绍了两种 开放定址法: 伪随机序列法:在发生冲突时,通过 伪随机数生成器 生成一个 伪随机序列 作为 探测序列 双散列法:在发生冲突时,通过 第二个哈希函数 计算出一个 独属于该关键字的固定探测步长

    16710

    聊聊java8中的@sun.misc.Contended与伪共享

    那么什么是为伪共享呢? 1.伪共享 在了解伪共享之前,需要了解一下CPU的缓存机制。...对于java类而言,一个javalong的对象长度为8字节,因此一个缓存行就是8个long的长度。...但是我们程序中的基本的变量都会小于这个宽度,因此这会带来另外一个问题,这就是伪共享。 伪共享的意思就是说,当线程1在使用变量x的时候,CPU会将X相连的部分共64字节全部都加载到core的L1中。...这就是我们说的伪共享。 那么怎么解决这个问题呢,最好的办法就是不让一个行中存在的数据产生竞争。那么最好的办法就是插入几个无效的变量将这两个高频计算的变量分开,使之不能加载到同一行中。...在java7中我们只能通过内存填充来解决这个问题,但是在java8中,提供了@sun.misc.Contended注解,替换了内存填充的工作。这就是@sun.misc.Contended注解的作用。

    1.3K23

    【使用Java代码快速找出Excel列中的重复数据】

    方式一、以下是使用Java代码实现快速找出Excel列中重复数据的示例: import java.io.File; import java.io.FileInputStream; import java.io.IOException...filePath = "path/to/excel.xlsx"; String sheetName = "Sheet1"; int columnNumber = 0; // 列索引...在运行代码之前,需要将filePath变量设置为实际的Excel文件路径,sheetName变量设置为要处理的工作表的名称,columnNumber变量设置为要检查重复的列的索引(从0开始计数)。...代码中的findDuplicateValues方法返回一个Map对象,其中键是重复的值,值是重复出现的次数。你可以根据需要对重复的值进行相应的处理。...在示例代码中,我们假设数据在第一列,因此使用row.getCell(0)获取单元格内容。如果数据已经在dataMap中存在,则说明存在重复项。否则,将数据添加到dataMap中。

    30810
    领券