「不需要索引的场景java」索引适用场景
本篇文章给大家谈谈不需要索引的场景java,以及索引适用场景对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中list、set和map 在什么场景下使用?
- 2、使用java在一个固定的String里查找指定字符,考虑该字符每次出现位置不同,所以不能用索引。
- 3、mysql数据库里面,什么样的数据不需要建立索引?
java中list、set和map 在什么场景下使用?
list 列表
set 集合
map 映射
从词义上可以看出来它们的大概作用:
列表是顺序存放对象的,可以有相同的对象,通过索引存取;
集合是无序存放对象的,其中不能有重复的对象(唯一的,回忆高中时候数学中学习的集合特性),集合没有索引,只能遍历次存取;
映射,存放的是键与值的映射,其中键是唯一的(不能有重复对象),而值可以有重复的对象,存的时候,需要指定键和对应的值,取的时候可以根据键名取到值,也可以遍历。
至于在什么时候使用,这个是要因地制宜的。
列表,在能直接使用数组的时候,就有使用列表,如一个班的学生的成绩,成绩是可以重复的;
集合,一般用于存放无序的(指顺序不重要)不能重复的对象,如一个班的学生的学号,学号是不能重复的;
映射,用于存放具有对应关系的键值对,如一个班的学生的学号与姓名的映射,每个学号对应了一个学生的姓名,学号不能重复,但是姓名可能会重复;
使用java在一个固定的String里查找指定字符,考虑该字符每次出现位置不同,所以不能用索引。
你看一下下边的代码,是不是你想要的,对于你说的不能用索引,不是很明白
str.indexOf(find) 这个方法可以找出匹配的字符串所在的开始索引啊。是不能用这个方法?
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Line {
public static void main(String[] args) {
String str = "div class=\"inf-pnl-price-detail\""
+ "dl"
+ "dtPrice:/dt"
+ "dd"
+ "div class=\"price price-highlight\""
+ "del class=\"original-price\"US $\\"
+ "span class=\"\" id=\"sku-price\"7.66/span"
+ "span class=\"separator\"//span"
+ "span class=\"unit\"piece/span"
+ "/del"
+ "/div"
+ "/dd"
+ "dtDiscount Price:/dt"
+ "dd"
+ "div class=\"price price-highlight\""
+ "span class=\"currency\" itemprop=\"priceCurrency\" content=\"USD\"US $/span"
+ "span class=\"value\" id=\"sku-discount-price\" itemprop=\"price\"6.89/span"
+ "span class=\"separator\"//spanspan class=\"unit\" piece /span"
+ "span class=\"time-left\"(7 days left )/span" + "/div"
+ "/dd" + "/dl" + "/div";
String find = "6.89";
// 不明白你说的不能用索引是什么意思。
// 如果你肯定这个字符串中只会出现一次,那么用indexof找到索引,是很正常的
int index = str.indexOf(find);
if (index == -1) {
System.out.println("[" + find + "]不存在");
} else {
System.out.println("[" + find + "]存在,在[" + index + " - "
+ (index + find.length()) + "]之间。");
System.out.println(str.substring(index, index + find.length()));
}
// 如果不能保证是只出现一次。
// 这种方法要找出每一个所在的位置,要麻烦一些。
Pattern p = Pattern.compile(find);
Matcher m = p.matcher(str);
ListString list = new ArrayListString();
while (m.find()) {
String group = m.group();
if (!"".equals(group)) {
list.add(group);
}
}
if (list.size() == 0) {
System.out.println("[" + find + "]不存在");
} else {
System.out.println("[" + find + "]存在,共有[" + list.size() + "]个。");
}
}
}
mysql数据库里面,什么样的数据不需要建立索引?
先正面回答你的问题
数据是否重复不是建立索引的重要依据,甚至都不是依据。
只要不完全重复(所有元组的该元素都一样),那么建立索引就是有意义的。
即使当前数据完全重复,也不是不能建立索引,这种情况有点复杂,不细说了。
对于你后面的疑问,可以给你一个如何建立索引的忠告,“如何查就如何建”。
索引的建立,唯一的原因就是为了查询(广义的查询),实际上建立索引会使得数据存储所占空间变大,有时索引所占的空间会查过数据本身的空间。索引的建立也会使得数据插入时变慢,特殊情况下,慢的难以忍受,所以dba的重要工作之一,就是检查索引层级并优化。
索引建立的唯一好处,就是按照索引查询时,变快了。type,status这2个字段是否适合建立索引,就要看你是否要按照这2个字段进行检索。而检索的顺序决定了如何建立索引。
对于索引类型和索引方式,我建议就
normal
和
btree
就适用于大多数情况。若你参与的是一个大数据处理项目,对数据存储和检索有特别要求,那么需要分析多个层面,比如数据吞吐量、数据的方差、平均差等等很多参数才考虑是否用聚集索引等(mysql好像还没聚集索引),至于是否是唯一索引,我建议不使用,即使能判定数据是唯一的也不要用,全文索引也没有必要。
关于不需要索引的场景java和索引适用场景的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-02,除非注明,否则均为
原创文章,转载请注明出处。