Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何为MySQL表创建高效索引?

如何为MySQL表创建高效索引?

提问于 2017-08-04 04:15:17
回答 1关注 0查看 719

已经给表上加了很多索引,为什么感觉查询还是没有那么理想呢?

回答 2

最爱开车啦

发布于 2017-12-22 02:12:40

问题中列出的每种类型的示例:

代码语言:txt
AI代码解释
复制
ListIterationExample.java
代码语言:txt
AI代码解释
复制
import java.util.*;
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
public class ListIterationExample {
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
     public static void main(String []args){
代码语言:txt
AI代码解释
复制
        List<Integer> numbers = new ArrayList<Integer>();
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // populates list with initial values
代码语言:txt
AI代码解释
复制
        for (Integer i : Arrays.asList(0,1,2,3,4,5,6,7))
代码语言:txt
AI代码解释
复制
            numbers.add(i);
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,1,2,3,4,5,6,7
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // replaces each element with twice its value
代码语言:txt
AI代码解释
复制
        for (int index=0; index < numbers.size(); index++) {
代码语言:txt
AI代码解释
复制
            numbers.set(index, numbers.get(index)*2); 
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,2,4,6,8,10,12,14
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // does nothing because list is not being changed
代码语言:txt
AI代码解释
复制
        for (Integer number : numbers) {
代码语言:txt
AI代码解释
复制
            number++; // number = new Integer(number+1);
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,2,4,6,8,10,12,14  
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // same as above -- just different syntax
代码语言:txt
AI代码解释
复制
        for (Iterator<Integer> iter = numbers.iterator(); iter.hasNext(); ) {
代码语言:txt
AI代码解释
复制
            Integer number = iter.next();
代码语言:txt
AI代码解释
复制
            number++;
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,2,4,6,8,10,12,14
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // ListIterator<?> provides an "add" method to insert elements
代码语言:txt
AI代码解释
复制
        // between the current element and the curso
代码语言:txt
AI代码解释
复制
        for (ListIterator<Integer> iter = numbers.listIterator(); iter.hasNext(); ) {
代码语言:txt
AI代码解释
复制
            Integer number = iter.next();
代码语言:txt
AI代码解释
复制
            iter.add(number+1);     // insert a number right before this
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // Iterator<?> provides a "remove" method to delete elements
代码语言:txt
AI代码解释
复制
        // between the current element and the curso
代码语言:txt
AI代码解释
复制
        for (Iterator<Integer> iter = numbers.iterator(); iter.hasNext(); ) {
代码语言:txt
AI代码解释
复制
            Integer number = iter.next();
代码语言:txt
AI代码解释
复制
            if (number % 2 == 0)    // if number is even 
代码语言:txt
AI代码解释
复制
                iter.remove();      // remove it from the collection
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 1,3,5,7,9,11,13,15
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
        // ListIterator<?> provides a "set" method to replace elements
代码语言:txt
AI代码解释
复制
        for (ListIterator<Integer> iter = numbers.listIterator(); iter.hasNext(); ) {
代码语言:txt
AI代码解释
复制
            Integer number = iter.next();
代码语言:txt
AI代码解释
复制
            iter.set(number/2);     // divide each element by 2
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        printList(numbers);         // 0,1,2,3,4,5,6,7
代码语言:txt
AI代码解释
复制
     }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
     public static void printList(List<Integer> numbers) {
代码语言:txt
AI代码解释
复制
        StringBuilder sb = new StringBuilder();
代码语言:txt
AI代码解释
复制
        for (Integer number : numbers) {
代码语言:txt
AI代码解释
复制
            sb.append(number);
代码语言:txt
AI代码解释
复制
            sb.append(",");
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
        sb.deleteCharAt(sb.length()-1); // remove trailing comma
代码语言:txt
AI代码解释
复制
        System.out.println(sb.toString());
代码语言:txt
AI代码解释
复制
     }
代码语言:txt
AI代码解释
复制
}

心愿

发布于 2017-12-22 02:12:19

循环的三种形式几乎相同。增强的for循环:

代码语言:txt
AI代码解释
复制
for (E element : list) {
代码语言:txt
AI代码解释
复制
    . . .
代码语言:txt
AI代码解释
复制
}

根据Java语言规范,与传统for循环迭代器的明确使用相同。在第三种情况下,只能通过删除当前元素来修改列表内容,并且只能通过remove迭代器本身的方法来完成。使用基于索引的迭代,您可以自由地以任何方式修改列表。但是,添加或删除当前索引之前的元素可能会导致循环跳过元素或处理相同的元素多次; 您需要在进行此类更改时正确调整循环索引。

在所有情况下,element都是对实际列表元素的引用。迭代方法都不会在列表中生成任何副本。element列表中相应元素的内部状态将始终显示内部状态的更改。

从本质上讲,只有两种方法可以遍历列表:使用索引或使用迭代器。增强的for循环只是Java 5中引入的一种语法快捷方式,可以避免显式定义迭代器的麻烦。对于这两种款式,你可以拿出本质琐碎的变化使用for,while或do while块,但他们都归结为同样的事情(或者说,两件事情)。

编辑:你可以使用a ListIterator来迭代您设置列表的当前元素。您将需要使用List#listIterator()而不是List#iterator()初始化循环变量(显然,必须被声明为一个ListIterator而不是一个Iterator)。

和开发者交流更多问题细节吧,去 写回答
相关文章
如何配置Spring Boot Tomcat
Spring Boot Web应用程序默认包含预配置的嵌入式Web服务器。但在某些情况下,我们要修改默认配置以满足自定义要求。
乱敲代码
2019/09/30
2.9K0
spring boot之端口设置和contextpath的配置[通俗易懂]
Spring boot 默认端口是8080,如果想要进行更改的话,只需要修改applicatoin.properties文件,在配置文件中加入:
全栈程序员站长
2022/09/27
9610
如何在Spring boot中修改默认端口
Spring boot为应用程序提供了很多属性的默认值。但是有时候,我们需要自定义某些属性,比如:修改内嵌服务器的端口号。
程序那些事
2020/07/08
1.7K0
Spring Boot修改启动端口
spring boot是个好东西,可以不用容器直接在main方法中启动,而且无需配置文件,方便快速搭建环境。可是当我们要同时启动2个springboot工程时,就会有问题,有可能会因为8080端口被第一个应用占用而导致第二个应用无法启动,这时就需要修改其中一个工程的启动端口。 1.可以通过实现EmbeddedServletContainerCustomizer接口来实现: public class Application extends SpringBootServletInitializer implem
hbbliyong
2018/03/06
2.2K0
Spring Boot 中如何配置 Profile
在 applcation.properties 文件中可以通过以下配置来激活 profile:
李红
2019/10/14
8780
Spring Boot Tomcat端口号
Spring Boot允许在不同的端口号上多次运行相同的应用程序。默认端口号为:8080。
黑洞代码
2021/08/06
6860
Spring Boot 配置
为了 Spring Boot 能够更好地生成配置元数据文件,我们可以在创建项目时添加 Spring Configuartion Processor 依赖,或者在创建好项目后的 pom.xml 文件中手动添加。添加该依赖后,我们在编写配置时就会有属性提示,大大降低编写错误。
村雨遥
2020/08/27
6930
Spring Boot 配置
Spring Boot如何集成Nginx配置代理
配置Nginx统一代理web容器如tomcat,jetty的请求,在日常开发中很常见,那么在配置集成的时候应该注意些什么呢 下面我们将通过一个例子介绍如何和Nginx配置: 首先,我们先看下一个spring boot项目的结构: demo src main assemble package.xml filters dev.properties test.pr
我是攻城师
2019/06/03
2.7K0
如何优雅实现Spring Boot自动配置
本文主要介绍如何把一个Spring项目(特别是一些公共工具类项目),基于Spring Boot自动配置的思想封装起来,使其他Spring Boot项目引入后能够进行快速配置。
Bug开发工程师
2018/10/22
6500
如何优雅实现Spring Boot自动配置
spring boot 系列之二:spring boot 如何修改默认端口号和contextpath「建议收藏」
上一篇文件我们通过一个实例进行了spring boot 入门,我们发现tomcat端口号和上下文(context path)都是默认的,
全栈程序员站长
2022/07/18
1.1K0
spring boot 系列之二:spring boot 如何修改默认端口号和contextpath「建议收藏」
如何异地加载 Spring Boot 配置文件?
平时,项目的yaml格式或者properties格式的配置信息文件都固化在了项目jar包里面,不便于动态更改。之前我写过一小段时间的Go,我都是从Redis里读取了相关的配置之后,再完成项目的启动。于是乎,我想在Spring Boot里也捣鼓一下。
好好学java
2020/03/19
8060
Spring Boot配置属性
摘要:springboot数据库连接池使用策略以及对应的配置属性 正文: springboot数据库连接池使用策略 springboot官方文档介绍数据库连接池的使用策略如下: Production database connections can also be auto-configured using a pooling DataSource. Here’s the algorithm for choosing a specific implementation: W
itliusir
2018/05/21
2K0
Spring Boot 基础配置
  SpringBoot 是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就需要添加配置文件。在 Spring Boot 中,配置文件有两种不同的格式,一个是 application.properties 另一个是 application.yml 或 application.yaml。虽然 properties 文件比较常见,但是相对于 properties 而言,yaml 更加简洁明了,而且使用的场景也更多,很多开源项目都是使用 yaml 进行配置。除了简洁,yaml 还有另外一个特点,就是 yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要,因此 Spring Boot 中我们一般采用 yaml。SpringBoot 默认会从 resources 目录下加载 application.properties 或 application.yml(application.yaml) 文件,所以 SpringBoot 项目中一般将配置文件放到 resources 中。
Demo_Null
2020/09/28
1.3K0
Spring Boot 基础配置
Spring Boot 日志配置
SLF4J 只是一个门面程序,并不做具体的日志打印功能,需要整合LogBack 、Log4j 等第三方模块。
LCyee
2020/08/05
9140
Spring Boot 配置详解
为了 Spring Boot 能够更好地生成配置元数据文件,我们可以在创建项目时添加 Spring Configuartion Processor 依赖,或者在创建好项目后的 pom.xml 文件中手动添加。添加该依赖后,我们在编写配置时就会有属性提示,大大降低编写错误。
村雨遥
2022/06/15
6860
Spring Boot 配置详解
Spring Boot 自动配置
○@SpringBootConfiguration:标记当前类为配置类 ○@EnableAutoConfiguration:开启自动配置 ○@ComponentScan:扫描主类所在的同级包以及下级包里的Bean
赵哥窟
2018/12/27
9210
Spring Boot是如何实现自动配置的
Spring Boot 是 Spring 旗下众多的子项目之一,其理念是约定优于配置,它通过实现了自动配置(大多数用户平时习惯设置的配置作为默认配置)的功能来为用户快速构建出标准化的应用。Spring Boot 的特点可以概述为如下几点:
Bug开发工程师
2018/07/23
1.1K0
Spring Boot是如何实现自动配置的
Spring Boot配置绑定
最近在做项目,发现springboot是一个好框架,是java的。如果要做测试开发,仅仅只熟悉python是远远不够的。来看看这个框架有什么优点:
赵云龙龙
2022/03/29
8010
Spring Boot 日志配置
1.移除默认日志 <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> 2.添加日志框架依赖 <!--引入日志依赖 抽象层 与 实现层--> <dependency> <groupId>org.slf4j</groupId> <artif
灰太狼学Java
2022/06/17
3090
Spring Boot核心配置
启动类 在包根目录下添加启动类,必须包含main方法,再添加Spring Boot启动方法: SpringApplication.run(SampleController.class, args); 或者流式API new SpringApplicationBuilder().run(args); 下面是一个典型的Spring Boot工程包布局,Application启动类位于根目录下 com +- example +- myproject +- Application.
Java技术栈
2018/03/30
9090
Spring Boot核心配置

相似问题

Spring boot服务如何配置SSL应用于linux?

0232

Spring boot网关配置SSL报错 - 证书无效?

1982

flowable整合spring boot ProcessEngines无法读取默认配置???

0105

Spring boot v 2.1.8 的多数据源配置问题?

06.3K

配置80端口有问题?

4693
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
到家集团 | 技术VP擅长5个领域
擅长3个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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