怎么从数据库中的一亿条数据中读取我想要的十条数据?

如题所述

写查询的sql语句,要在查询关键字上建立索引,这样可以加快速度。
例如:select 字段1,字段2,... from 表 where 条件1= aa and 条件2 = bb
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。
2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。
3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null

可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

4、尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20

可以这样查询:
select id from t where num=10
union all
select id from t where num=20

5、下面的查询也将导致全表扫描:(不能前置百分号)
select id from t where name like ‘�c%’

若要提高效率,可以考虑全文检索。
6、in 和 not in 也要慎用,否则会导致全表扫描,如:
select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:
select id from t where num between 1 and 3

7、如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:
select id from t where num=@num

可以改为强制查询使用索引:
select id from t with(index(索引名)) where num=@num

8、应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where num/2=100

应改为:
select id from t where num=100*2

9、应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:
select id from t where substring(name,1,3)=’abc’–name以abc开头的id
select id from t where datediff(day,createdate,’2005-11-30′)=0–’2005-11-30′生成的id

应改为:
select id from t where name like ‘abc%’
select id from t where createdate>=’2005-11-30′ and createdate<’2005-12-1′

10、不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-07-31
如果数据存在索引,根据条件取出需要的10条数据,如果数据大于10条,可以top 10

如果不存在索引,添加索引,再按第一步操作!本回答被网友采纳
第2个回答  推荐于2016-12-04
public void setError(String error) {
this.error = error;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}本回答被提问者采纳

怎么从数据库中的一亿条数据中读取我想要的十条数据?
3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=0 4、尽量避免在 where 子句中使用 or 来连接条件,否...

excel如何在数据库中批量查找想要的数据
1.日期格式需要修改,推荐不要使用"."来当作年月日的分格符,最好使用 "-"来分格,因为这样以后系统会自动把这一个单元格的数据当作是日期型的。2.添加出一列来用month函数来统计日期属于哪个月。3.选中数据区域使用数据透视表,把月份放入"报表筛选"项,把部门放入"行标签"项,把消费放入"数值"...

excel数据库,如何提取想要的数据?
1、打开源数据文件,把首行中的对应的数据,复制行到空白位置。2、选中J2单元格,单击编辑栏中的"插入函数“,如图示。3、弹出”插入函数“对话框,设置其类别为”逻辑“,并选择列表框中的IF选项。然后确定。4、在弹出的”函数参数“对话框中,设置Logical_test参数为”I2=“”,将Value_if_true设...

如何从800万数据中快速捞出自己想要的数据?
在处理800万数据量的Oracle数据库时,如何快速捞取所需数据?首先,我们需求调研发现,目标是在800万数据中,通过特定字段进行模糊查询,获取所需数据集。数据量为7328976条,接近800万。理想结果是根据耗材名称、生产企业名称或其他字段进行模糊查询,得到所需数据。常规思路,模糊查询往往采用LIKE关键字,但...

用sql语句怎么从数据库中提取结果
1、我们首先在创建一个WEB页面,用EF导入数据库中的一个实体模型,然后创建一个按钮,点击按钮以后用EF向数据库中执行insert操作。2、下面我们打开数据库,然后选择数据库工具栏中的工具,然后选择Profile工具。3、登录了以后,你会发现牵扯到数据库的所以语句执行都在这里显示出来了。4、然后我们点击我们...

数据库语句中筛选出来多个结果后,如何只筛选出一个想要的结果?
首先来说一下sql的大概的执行顺序,主流的数据库一般都是这样的,from表(找到数据集)—where(对数据进行删选)—group by(对数据进行分组,合并处理)—select(选出数据项)—order by(对结果数据集进行排序),这是大致粗糙的顺序,还有排重啊、删选组啊等等,不细说了,最重要的是看执行计划...

上亿条数据查询解决方案?
数据库有上亿条商品数据 需要处理大量按商品名称的模糊查询(假设商品名称的分词已经实现了,也就是用多个关键字来查询)我最本来是这样设想的:建立一个商品名称索引表:ID,Name,ProductID 三个字段 ID自增 Name(分词程序对商品名称进行分词后,保存下来的一个词),ProductID,商品名称包含该词的...

MySQL中一条语句匹配多条记录的方法mysql一匹配多
MySQL中一条语句匹配多条记录的方法 在MySQL数据库中,有时候我们需要查询某些数据,并且希望能够匹配到多条记录。这个时候,可以使用一些特殊的关键字和语句来实现这个目的。本文将介绍MySQL中一条语句匹配多条记录的方法,包括UNION、UNION ALL、IN等关键字的使用。一、UNION关键字 UNION关键字用于将两个...

excel中如何提取我想要的数据?
首先打开excel软件。请点击输入图片描述 2 然后打开excel文件。请点击输入图片描述 3 然后点击“查找和选择”。请点击输入图片描述 4 然后点击“查找”。请点击输入图片描述 5 然后输入相关的查找内容并点击“查找全部”。请点击输入图片描述 6 最后excel会自动定位与你查找内容相近的单元格。请点击输入图片...

如何快而准地查找数据库中的数据?
1、准备数据 将原有的数据源下拉一行,然后在表格中复制原有数据源的标题行,粘贴在右边空白列 为什么要把原始数据下拉一行, 因为我们会在右边第2行输入条件数据,如果筛选的时候第2行被隐藏了,后面没法输入条件了。所以为了确保第2行不被隐藏,把原始数据下拉了一行处理。2、录制宏 关键在于这一步,...

相似回答