0 0

【sql效率优化】一个字段的比较0

有一个表image,它有一个字段叫finger,这个字段里的数据全是16位的16进制数字所构成的字符串。eg:2ed023a7c9fb13ff9

现在要取得的数据是这样的

用户传一个像上面一样的16位数字的字符串,我要取出,表中所有finger字段与他只差5个以内的数据。eg:122abc和123abb,这2个字符串就相差2个,第3个数字和第6个数字不一样。

就是在相同的地方,有多少个不同点

要是把数据全部取出来,再挨个比较便利,那也太慢了,有没有什么好办法来提高效率
2013年5月24日 16:49

4个答案 按时间排序 按投票排序

0 0

编辑距离,又叫莱文斯坦距离。
参考
http://zh.wikipedia.org/wiki/%E7%B7%A8%E8%BC%AF%E8%B7%9D%E9%9B%A2

也许是你要找的。

如果是,再查找你所使用的DB的实现。

2013年5月27日 14:47
0 0

如果没有任何的规律可循,那只想到遍历去比较,

同时同意:

引用

这种需求就不要用sql来做了,缓存到内存中,然后在内存中写比较逻辑

12 小时前aa87963014


遍历比较不会多慢,慢的是每次去数据库查.只要你的内存够大,能缓存的下.

public class Test
{
	public static List<String> list = new ArrayList<>();

	static
	{
		for (int i = 0; i < 1000000; i++)
			list.add("2ed023a7c9fb13ff9");

	}

	public static void main(String[] args)
	{
		long time = System.currentTimeMillis();
		for(String s : list)
		{
			if(differenceCount("2ed023a7c9fb13ff9",s) < 5)
			{
				//TODO
			}
		}
		System.out.println(System.currentTimeMillis() - time);
		
	}
	
	private static int differenceCount(String s1,String s2)
	{
		if(s1.length() != s2.length())
			throw new RuntimeException();
		
		char[] ca1 = s1.toCharArray();
		char[] ca2 = s2.toCharArray();
		int  count  = s1.length();
		for(int i = 0 ;i < s1.length(); i ++)
		{
			if(ca1[i] == ca2[i])
				count --;
		}
		return count;
	}
}

我这 100W 次是 70多 毫秒.ps jdk7

2013年5月25日 22:57
0 0

这个字符传匹配就很复杂,建议不用数据库,而是多机器,多线程运算

2013年5月25日 22:05
0 0

这种需求就不要用sql来做了,缓存到内存中,然后在内存中写比较逻辑

2013年5月25日 11:06

相关推荐

    将数据库中的两个字段合并为一个字段

    在数据库管理过程中,经常会遇到需要对数据进行整理和优化的情况,其中一个常见的需求就是将数据库中的两个字段合并为一个字段。这种操作不仅可以简化数据结构,还能提高数据查询的效率。接下来,我们将详细介绍如何...

    OracleSQL的优化.pdf

    优化器把使用 LIKE 操作符和一个没有通配符的表达式组成的检索表达式转换为一个"="操作符表达式。例如,优化器会把表达式 `ename LIKE 'SMITH'` 转换为 `ename = 'SMITH'`。优化器只能转换涉及到可变长数据类型的...

    SQL查询字段被包含语句

    `CHARINDEX`是SQL Server中的一个字符串函数,它返回一个指定的子字符串在另一个字符串中首次出现的位置。如果子字符串不存在,它将返回0。这个函数可以帮助我们一次性检查多个关键词是否包含在目标字段中。例如,要...

    ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段

    在数据库管理领域,数据迁移是一...总的来说,跨数据库系统的数据迁移是一个复杂的过程,需要对源和目标数据库的特性和功能有深入理解。在迁移过程中,确保数据的完整性和准确性至关重要,因此需要谨慎处理每一个环节。

    sql语句优化建议

    ### SQL语句优化建议 ...综上所述,SQL语句优化是一项系统性的工程,涉及到索引设计、操作符选择、执行计划调整等多个层面。通过深入理解数据库原理,结合实际应用场景,持续测试与调优,才能达到理想的性能优化效果。

    sql截取中间字段

    例如,有时我们需要从一个包含多个值的字符串中提取出特定位置的值。本篇文章将详细解释如何利用SQL中的`LEFT`、`STUFF`以及`CHARINDEX`等函数来实现字符串中间部分的截取功能,并通过具体的示例代码来帮助理解这一...

    Sql优化.ppt

    SQL 查询优化是数据库优化的重要部分,查询优化器是 SQL SERVER 中的一个组件,可以自动优化查询语句,提高查询效率。本文将详细介绍查询优化器的工作原理、SARG 的定义和应用、查询优化的 tips 等。 一、查询优化...

    mysql数据库sql优化

    例如,在表`staffs`中,创建了一个多列索引`idx_staffs_nameAgePos`,包括`name`、`age`和`pos`三个字段。 - **示例**: - 使用全值匹配查询: ```sql EXPLAIN SELECT * FROM staffs WHERE NAME='July' AND age=...

    优化sql语句执行效率几点注意事项

    在数据库管理中,SQL语句的执行效率是关键因素之一,尤其...总之,优化SQL语句执行效率是一个多方面的工作,需要结合具体业务场景,综合运用索引策略、SQL编写技巧、数据库配置和维护等手段,才能实现系统的高效运行。

    ORACLE-SQL性能优化大全.pdf

    通过以上知识点的详细阐述,我们可以看到Oracle SQL性能优化是一个涉及多个层面、多个方面的综合性任务。无论是从SQL语句本身出发,还是从数据库设计、实例配置等方面入手,都需要综合考虑多种因素,才能达到最佳的...

    提升MYSQL查询效率的10个SQL语句优化技巧.doc

    "MYSQL 查询效率优化技巧" 在数据库应用中,MySQL 查询效率对程序的执行速度有很大的影响。有效的处理优化数据库是非常有用的,尤其是大量数据需要处理的时候。以下是十个 SQL 语句优化技巧来提升 MYSQL 查询效率:...

    SQL语句查询数据表主键和所有字段

    除了查询主键之外,了解一个表的所有字段对于数据操作同样至关重要。这可以通过查询`sys.columns`系统视图实现。 #### SQL语句示例 ```sql SELECT c.name AS column_name FROM sys.columns c WHERE c.object_id = ...

    SQL Server SQL优化

    在数据库环境中,一个简单的低效SQL查询就足以让整个数据库系统陷入瘫痪状态。 #### 二、数据库性能瓶颈分析 数据库性能问题通常可以从硬件和软件两个层面进行排查: - **硬件层面**包括内存、硬盘、CPU以及网络...

    ORACLE中SQL查询优化技术

    1. **建立多列索引**:对于经常用于查询条件的`ORDER_DATE`和`CUSTOMER_ID`字段,创建一个多列索引。 2. **使用分区**:将`ORDERS`表按`ORDER_DATE`字段进行范围分区,以便快速定位到特定时间段的数据。 3. **调整...

    数据库SQL优化大总结之 百万级数据库优化方案.pdf

    11. 在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引。 本文总结了数据库SQL优化的十一个重要知识点,旨在帮助开发者提高SQL查询效率,避免...

    SQL数据库优化工具

    在IT领域,数据库是存储和管理数据的核心组件,而SQL(Structured ...对于"WebCast20050127_Demo"这个文件,可能是一个关于数据库优化工具的演示或教程,进一步深入学习和实践,将有助于我们更好地理解和应用这些工具。

    sql书写优化和性能优化

    当SQL语句中涉及多表连接时,建议为每个表指定一个简短的别名,并在引用字段时带上相应的表别名。例如:`SELECT a.col1, a.col2, b.col3 FROM table_a a, table_b b WHERE a.col4 = b.col5`。这样做的好处是可以减少...

    sql语句替换某列所有字段中的某个字符(如替换‘1,2,3,4’中的4)

    例如,将一个字段中的某个特定字符或字符串替换为另一个字符或字符串。这种需求在实际业务处理中非常常见,尤其是在数据迁移、数据整合或数据清理的过程中。 #### 2. 使用REPLACE函数进行字符替换 在SQL中,`...

    oracle实现多字段匹配一个关键字查询

    在Oracle数据库中,有时我们需要对多个字段进行联合搜索,即多字段匹配一个关键字查询。本文将详细介绍两种在Oracle中实现这种查询的方法。 ### 一、使用管道符号(||)连接字段 这种方法通过使用Oracle中的字符串...

    sql 性能优化文档下载

    性能优化是一个持续的过程,需要定期审查SQL执行情况,根据监控结果进行调整。 综上所述,Oracle SQL性能优化涉及多个层面,从SQL语句编写、索引设计到数据库架构优化,都需要深入理解和实践。通过学习和应用这些...

Global site tag (gtag.js) - Google Analytics