*#*#4693*#*#查数据库查询

什么是 MyBatis?
MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
MyBatis下载:/mybatis/mybatis-3/releases
Mybatis实例
对一个User表的CRUD操作:
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(50) DEFAULT NULL,
`userAge` int(11) DEFAULT NULL,
`userAddress` varchar(200) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');
INSERT INTO `user` VALUES ('2', 'test2', '22', 'suzhou');
INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');
INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');
INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing');
在Src目录下建一个mybatis的xml配置文件Configuration.xml
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd"&
&configuration&
&!-- mybatis别名定义 --&
&typeAliases&
&typeAlias alias="User" type="com.mybatis.test.User"/&
&/typeAliases&
&environments default="development"&
&environment id="development"&
&transactionManager type="JDBC"/&
&dataSource type="POOLED"&
&property name="driver" value="com.mysql.jdbc.Driver"/&
&property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis" /&
&property name="username" value="root"/&
&property name="password" value="admin"/&
&/dataSource&
&/environment&
&/environments&
&!-- mybatis的mapper文件,每个xml配置文件对应一个接口 --&
&mapper resource="com/mybatis/test/User.xml"/&
&/mappers&
&/configuration&
定义User mappers的User.xml配置文件
&?xml version="1.0" encoding="UTF-8" ?&
&!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"&
&mapper namespace="com.mybatis.test.IUserOperation"&
&!-- select语句 --&
&select id="selectUserByID" parameterType="int" resultType="User"&
select * from `user` where user.id = #{id}
&!-- 定义的resultMap,可以解决类的属性名和数据库列名不一致的问题--&
&!-- &resultMap type="User" id="userResultMap"&
&id property="id" column="user_id"
&result property="userName" column="user_userName"
&result property="userAge" column="user_userAge"
&result property="userAddress" column="user_userAddress"
&/resultMap& --&
&!-- 返回list的select语句,注意 resultMap的值是指向前面定义好的 --&
&!-- &select id="selectUsersByName" parameterType="string" resultMap="userResultMap"&
select * from user where user.userName = #{userName}
&/select& --&
&select id="selectUsersByName" parameterType="string" resultType="User"&
select * from user where user.userName = #{userName}
&!--执行增加操作的SQL语句。id和parameterType分别与IUserOperation接口中的addUser方法的名字和参数类型一致。
useGeneratedKeys设置为"true"表明要MyBatis获取由数据库自动生成的主键;keyProperty="id"指定把获取到的主键值注入到User的id属性--&
&insert id="addUser" parameterType="User"
useGeneratedKeys="true" keyProperty="id"&
insert into user(userName,userAge,userAddress)
values(#{userName},#{userAge},#{userAddress})
&update id="updateUser" parameterType="User" &
update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
&delete id="deleteUser" parameterType="int"&
delete from user where id=#{id}
配置文件实现了接口和SQL语句的映射关系。selectUsersByName采用了2种方式实现,注释掉的也是一种实现,采用resultMap可以把属性和数据库列名映射关系定义好,property为类的属性,column是表的列名,也可以是表列名的别名!
User类的定义:
package com.mybatis.
public class User {
private int
private String userN
private int userA
private String userA
public int getId() {
public void setId(int id) {
public String getUserName() {
return userN
public void setUserName(String userName) {
this.userName = userN
public int getUserAge() {
return userA
public void setUserAge(int userAge) {
this.userAge = userA
public String getUserAddress() {
return userA
public void setUserAddress(String userAddress) {
this.userAddress = userA
public String toString(){
return this.userName+" "+this.userAge+" "+this.userA
IUserOperaton定义:
package com.mybatis.
import java.util.L
public interface IUserOperation {
public User selectUserByID(int id);
public List&User& selectUsersByName(String userName);
public void addUser(User user);
public void updateUser(User user);
public void deleteUser(int id);
IUserOperation为操作接口,函数名和mybatis的xml配置文件中的操作id名对应。
测试类Test:
package com.mybatis.
import java.io.R
import java.util.L
import org.apache.ibatis.io.R
import org.apache.ibatis.session.SqlS
import org.apache.ibatis.session.SqlSessionF
import org.apache.ibatis.session.SqlSessionFactoryB
public class Test {
private static SqlSessionFactory sqlSessionF
private static R
reader = Resources.getResourceAsReader("Configuration.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
public static SqlSessionFactory getSession() {
return sqlSessionF
public void getUserByID(int userID) {
SqlSession session = sqlSessionFactory.openSession();
IUserOperation userOperation = session
.getMapper(IUserOperation.class);
User user = userOperation.selectUserByID(userID);
if (user != null) {
System.out.println(user.getId() + ":" + user.getUserName()
+ ":" + user.getUserAddress());
} finally {
session.close();
public void getUserList(String userName) {
SqlSession session = sqlSessionFactory.openSession();
IUserOperation userOperation = session
.getMapper(IUserOperation.class);
List&User& users = userOperation.selectUsersByName(userName);
for (User user : users) {
System.out.println(user.getId() + ":" + user.getUserName()
+ ":" + user.getUserAddress());
} finally {
session.close();
* 增加后要commit
public void addUser() {
User user = new User();
user.setUserAddress("place");
user.setUserName("test_add");
user.setUserAge(30);
SqlSession session = sqlSessionFactory.openSession();
IUserOperation userOperation = session
.getMapper(IUserOperation.class);
userOperation.addUser(user);
System.out.println("新增用户ID:" + user.getId());
} finally {
session.close();
* 修改后要commit
public void updateUser() {
SqlSession session = sqlSessionFactory.openSession();
IUserOperation userOperation = session
.getMapper(IUserOperation.class);
User user = userOperation.selectUserByID(1);
if (user != null) {
user.setUserAddress("A new place");
userOperation.updateUser(user);
} finally {
session.close();
* 删除后要commit.
* @param id
public void deleteUser(int id) {
SqlSession session = sqlSessionFactory.openSession();
IUserOperation userOperation = session
.getMapper(IUserOperation.class);
userOperation.deleteUser(id);
} finally {
session.close();
public static void main(String[] args) {
Test test = new Test();
// test.getUserByID(1);
// test.getUserList("test1");
// test.addUser();
// test.updateUser();
// test.deleteUser(6);
} catch (Exception e) {
System.out.println(e.getMessage());
代码下载:http://download.csdn.net/detail/luxiaoxun/8056559
Source Code:
MyBatis-3-User-Guide-zh
http://legend5/d-5
http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html
阅读(...) 评论()求求这个IP125.46.93.* 是再那里发出的 , 要的是准确地址_ip查询吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:27,656贴子:
求求这个IP125.46.93.* 是再那里发出的 , 要的是准确地址
是不是只有滑稽  无聊...
萌萌哒楼主帮忙查
这次千万不要在被度娘抽...
老大镇楼!
准确的话。推荐您找右岸工作室 很有名气 也支持当面交易工作室在上海。
河南省平顶山市
查不出,别为他们做广告
您查询的:221.206.8.0本站主数据:黑龙江省牡丹江市
ID PSBCGONG
内&&容:使用签名档&&
保存至快速回贴郑昀 创建于 最后更新于
一)选型:Shib+Presto
应用场景:即席查询(Ad-hoc Query)
1.1.即席查询的目标
使用者是产品/运营/销售运营的数据分析师;
要求数据分析师掌握查询SQL查询脚本编写技巧,掌握不同业务的数据存储在不同的数据集市里;
不管他们的计算任务是提交给 数据库 还是 Hadoop,计算时间都可能会很长,不可能在线等待;
使用者提交了一个计算任务(PIG/SQL/Hive SQL),控制台告知任务已排队,给出大致的计算时间等友情提示, 这些作业的权重较低,
使用者和管理员可以查看排队中的计算任务,包括已执行任务的执行时间、运行时长和运行结果;
当计算任务有结果后,控制台界面有通知提示,或者发邮件提示,使用者可以在线查看和下载数据。
1.2.即席查询的当下技术选型
图形交互界面:Shib;
数据查询引擎:Facebook Presto。
1.3.为什么要更换数据查询引擎?
基于 MapReduce 的 Hadoop 适合数据批处理,但不适合即席查询场景。基于 InnoDB/MyISAM 存储引擎的 MySQL 自然也不适合。当然我们也观察过 InfiniDB/InfoBright 这种列式存储数据库引擎(仍基于MySQL),它们更适合基本不再变更的历史 归档数据,所以不太适合电商应用场景。
我们的鹰眼(Tracing)项目就曾折翼在即时查询上,后端的 HBase 扛不住在大数据量下的实时插入和查询。
『Hive 更适合于长时间的批处理查询分析,Impala、Shark、Stinger和Presto 适用于实时交互式SQL查询,它们给数据分析师提供了快速实验、验证想法的大数据分析工具。所以可以先使用 Hive 进行数据转换处理,之后使用这四个系统中的一个在 Hive 处理后的结果数据集上进行快速的数据分析。
Impala、Shark、Stinger和Presto四个系统都是类SQL实时大数据查询分析引擎,但是它们的技术侧重点完全不同。而且
它们也不是为了替换Hive而生,Hive 在做数据仓库时是非常有价值的。这四个系统与Hive都是构建在Hadoop之上的数据查询工具,各有不同的侧重适应 面,但从客户端使用来看它们与Hive有很多的共同之处,如数据表元数据、Thrift接口、ODBC/JDBC驱动、SQL语法、灵活的文件格式、存储 资源池等。』——《开源大数据查询分析引擎现状,2014》
最终我们选择了 Presto。
FaceBook于2013年11月份开源了Presto,一个分布式SQL查询引擎,它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。Presto设计了一个简单的数据存储的抽象层,来满足在不同数据存储系统(包括HBase、HDFS、Scribe等)之上都可以使用SQL进行查询。
Presto 简化的架构如下图1所示,客户端将 SQL 查询发送到 Presto 的协调器。协调器会进行语法检查、分析和规划查询计划。调度器将执行的管道组合在一起,将任务分配给那些离数据最近的节点,然后监控执行过程。客户端从输 出段中将数据取出,这些数据是从更底层的处理段中依次取出的。
Presto 的运行模型与 Hive 有着本质的区别。Hive 将查询翻译成多阶段的 Map-Reduce 任务,一个接着一个地运行。 每一个任务从磁盘上读取输入数据并且将中间结果输出到磁盘上。然 而 Presto 引擎没有使用 Map-Reduce。它使用了一个定制的查询执行引擎和响应操作符来支持SQL的语法。除了改进的调度算法之外,所有的数据处理都是在内存中进行的。不 同的处理端通过网络组成处理的流水线。这样会避免不必要的磁盘读写和额外的延迟。这种流水线式的执行模型会在同一时间运行多个数据处理段,一旦数据可用的 时候就会将数据从一个处理段传入到下一个处理段。
这样的方式会大大的减少各种查询的端到端响应时间。
同时,Presto 设计了一个简单的数据存储抽象层,来满足在不同数据存储系统之上都可以使用 SQL 进行查询。存储连接器目前支持除 Hive/HDFS 外,还支持 HBase、Scribe 和定制开发的系统。
图1. Presto架构
1.4.在HUE和Shib之间选择了后者
HUE 大家可能都听说过。Shib 相对陌生一些,它是这么介绍自己的:WebUI for query engines: Hive and Presto。
潘高锋介绍了二者的优缺点。
开发语言:Python
优 点:Hue 是一个能够与 Apache Hadoop 交互的 Web 应用程序。一个开源的 Apache Hadoop UI。我们已经在生产环境使用Hue了,而且Hue在管理Hbase/Pig/Hive方面有很大的优势,它还附带了一个Oozie的应用程序,用于创建 和监控工作流程 。
缺点:Hue 是一个比较重的工具,改动起来涉及的东西会比较多,而且以后每次升级都可能会导致我们改动的功能要再修改 。
开发语言:Nodejs
优点:Shib 通过简单的配置就可以直接操作 hive 和 presto。代码量比较小,修改起来工作量少很多 。
缺点:对 Nodejs 不熟悉,有学习成本 。
最后我们选定了代码量和开发量相对较少的 Shib 。
1.5.即席查询的界面展示
登录 shib 后,选择数据仓库 presto-wowo_dw。编写 sql 的时候,可以把表结构的提示框移到一边,边写边参照,如下图所示。
图2 边查询边看数据结构
由于所有的查询都是异步的,所以可以在“我的查询”列表中看到自己的查询语句的执行状态和执行结果,这样不用自己在一直在查询界面等待了,如下图所示。
图3 我的查询
还可以把自己常用的查询语句保存到“书签”里,这是一个很实用的功能。
接下来就可以开发SQL查询结果站内通知机制以及更复杂的用户访问权限控制机制了。
二)选型:HUE+Oozie
应用场景:Hadoop集群计算任务调度和管理平台。
2.1.数据平台跑数据所面对的困难
电商数据平台的报表维度有很多种,有总体简报角度、运营角度、媒体投放角度等,也可以有商品、商户、用户、竞品等维度,还有日报、周报和月报之分。所以对 应了很多个计算任务。每一个计算任务可以视为一个工作流,毕竟计算过程是很复杂的、一环套一环。那么 HUE+Oozie 就是可视化管理和调度这些工作流的。
没有 Oozie 之前是什么样?
一,计算脚本被配置为定时任务,跑飞了只能从海量日志中大海捞针,不知道断在哪儿,只能手动清数据从头再跑。任务计算时间特别长,不知道当前跑到哪一步了,还需要多久能跑完。
二,难以精确控制任务A跑完了才能跑任务B,只能在不同定时任务之间留足够长的时间间隔,缺乏弹性。
2.2.Oozie是什么
Oozie是一种 Java Web 应用程序,它运行在 Tomcat 中,并使用数据库来存储以下内容:工作流定义、当前运行的工作流实例(包括实例的状态和变量)。
我们最欣赏它的三点:
Oozie允许失败的工作流从任意点重新运行,这对于处理工作流中由于前一个耗时活动而出现瞬态错误的情况非常有用。
工作流执行过程可视化。
工作流的每一步的日志、错误信息都可以点击查看,并实时滚动,便于排查问题。
2.3.还是看截图吧
先选择HUE导航栏上的“Oozie Editor/Dashboard”,看到默认面板:
图5 oozie默认面板
点击某个工作流,进入详情页:
图6 工作流详情页
一个工作流的定义如下图7所示,XML格式的 hPDL。hPDL是一种很简洁的语言,只会使用少数流程控制和动作节点。控制节点会定义执行的流程,并包含工作流的起点和终点(start、end和 fail节点)以及控制工作流执行路径的机制(decision、fork和join节点)。
图7 工作流定义
现在,数据平台的各种计算任务都迁移到 Oozie 中,按照 hPDL 语言格式一一重新定义。
三)总结一下数据中心的各种技术选型
罗列如下,不再解释:
Apache Hadoop/Hive/HBase
Apache Pig
Flume/Kafka/Storm/Sqoop/awk
Facebook Presto
相关 [数据 技术 shib] 推荐:
- ITeye博客
郑昀 创建于 最后更新于. 一)选型:Shib+Presto. 应用场景:即席查询(Ad-hoc Query). 使用者是产品/运营/销售运营的数据分析师;. 要求数据分析师掌握查询SQL查询脚本编写技巧,掌握不同业务的数据存储在不同的数据集市里;. 不管他们的计算任务是提交给 数据库 还是 Hadoop,计算时间都可能会很长,不可能在线等待;. 使用者提交了一个计算任务(PIG/SQL/Hive SQL),控制台告知任务已排队,给出大致的计算时间等友情提示, 这些作业的权重较低,. 使用者和管理员可以查看排队中的计算任务,包括已执行任务的执行时间、运行时长和运行结果;.
- 博客 - 伯乐在线
全文译自墙外文章“
NoSQL Data Modeling Techniques”,译得不好,还请见谅. 这篇文章看完之后,你可能会对NoSQL的数据结构会有些感觉. 我的感觉是,关系型数据库想把一致性,完整性,索引,CRUD都干好,NoSQL只干某一种事,但是牺牲了很多别的东西. 总体来说,我觉得NoSQL更适合做Cache. NoSQL 数据库经常被用作很多非功能性的地方,如,扩展性,性能和一致性的地方. 但在另一方面,NoSQL的数据建模技术却因为缺乏像关系型数据库那样的基础理论没有被世人很好地研究. 这篇文章从数据建模方面对NoSQL家族进行了比较,并讨论几个常见的数据建模技术. 要开始讨论数据建模技术,我们不得不或多或少地先系统地看一下NoSQL数据模型的成长的趋势,以此我们可以了解一些他们内在的联系.
- 透明思考 - Thoughts
(商业读书会第23期的题目:Big Data. McKinsey Quarterly 的,和一篇. 通篇无非就是在讲(1)数据真的很大;(2)各行各业都要学会处理大数据. 于是
另一篇文章 进入视野. 不过最精彩的还是麦肯锡的
分析报告 ,其中最吸引我的是“方法和技术”的部分. 关于“怎么做”的这部分,麦肯锡的报告里分成三个部分:分析方法;技术;可视化展现. 首先是如何使用大数据的方法,我把它细分为
Applications、
Approaches和
Academic Disciplines三个子类. 这部分讲的是大数据这件事有哪些具体的工作,需要用到哪些知识基础. 说实话,这部分的内容(尤其是“应用”部分)有点超出我最初的想象.
- 服务器运维与网站架构|Linux运维|互联网研究
Big Data是近来的一个技术热点,但从名字就能判断它并不是什么新词. 历史上,数据库、数据仓库、数据集市等信息管理领域的技术,很大程度上也是为了解决大规模数据的问题. 被誉为数据仓库之父的Bill Inmon早在20世纪90年代就经常将Big Data挂在嘴边了. 然而,Big Data作为一个专有名词成为热点,主要应归功于近年来互联网、云计算、移动和物联网的迅猛发展. 无所不在的移动设备、RFID、无线传感器每分每秒都在产生数据,数以亿计用户的互联网服务时时刻刻在产生巨量的交互……要处理的数据量实在是太大、增长太快了,而业务需求和竞争压力对数据处理的实时性、有效性又提出了更高要求,传统的常规技术手段根本无法应付.
- CSDN博客推荐文章
Oracle 11g EE版本中只有: Basic Table Compression ,而 AdvanceCompression Feature需要单独购买. 11g Advanced Compression 有如下特性:. --支持了DML 语句的compress,下面会重点关注. --包括RMAN和expdp/impdp.对数据泵,compress 是inline的,在impdp时不需要进行解压缩,直接导入即可. --在DG中使用,Redo在传输中被压缩和解压缩.
关于11g Advanced Compression,参考Oracle 的compression 白皮书:. 这里我们只看Compressionfor Table Data.
- Parallel Labs
原文发表于《程序员》杂志2013年第2期.. 随着以Hadoop为代表的大数据分析技术的普及,大数据的商业价值得到深入挖掘,并开始在互联网、零售、医疗、物联网等多个行业里成为商业变革的主导力量. Facebook最近就发布了名为Graph Search的新型社交搜索产品,基于海量的社交关系网络及“Likes”行为数据,为用户提供个性化的社交搜索服务,该产品被认为将是Google搜索业务的重要竞争对手. 在电子商务领域,淘宝的数据魔方就是一个基于大数据分析的典型产品. 数据魔方基于淘宝所掌握的大量消费数据提供各种各样的分析服务,例如展示消费者的购物习惯,地域分布,年龄分布,热销排名等,为淘宝卖家提供了非常有价值的分析数据.
- CSDN博客云计算推荐文章
从分类问题的提出至今,已经衍生出了很多具体的分类技术. 下面主要简单介绍四种最常用的分类技术,不过因为原理和具体的算法实现及优化不是本书的重点,所以我们尽量用应用人员能够理解的语言来表述这些技术. 而且我们会在第4章再次给读者讲述分类算法和相关原理. 在我们学习这些算法之前必须要清楚一点,分类算法不会百分百准确. 每个算法在测试集上的运行都会有一个准确率的指标. 用不同的算法做成的分类器(Classifier)在不同的数据集上也会有不同的表现. K最近邻(k-Nearest Neighbor,kNN)分类算法可以说是整个数据挖掘分类技术中最简单的方法. 所谓K最近邻,就是k个最近的邻居,说的是每个样本都可以用它最接近的K个邻居来代表.
- 数据库 - ITeye博客
项目上有一个需求,从外网的另一个库中的数据同步到其他网段中. 基于Oracle数据库的数据同步技术大体上可分为两类:Oracle自己提供的数据同步技术和第三方厂商提供的数据同步技术. Oracle自己的同步技术有DataGuard,Streams,Advanced Replication和今年刚收购的一款叫做GoldenGate的数据同步软件. 第三方厂商的数据同步技术有Quest公司的SharePlex和DSG的RealSync. 一、DataGuard数据同步技术. DataGuard是Oracle数据库自带的数据同步功能,基本原理是将日志文件从原数据库传输到目标数据库,然后在目标数据库上应用(Apply)这些日志文件,从而使目标数据库与源数据库保持同步.
- Hello Database
真的很抱歉,我的博客已经很久没有更新了,因为花了太多的时间在微博和微信上,当然最主要的原因还是工作实在太忙了,仅剩的那点业余时间都用来陪娃了. 从2012年开始,工作重心转移到了淘宝和天猫,我的技术方向也发生了改变,2012年和2013年,经历了两次双十一,在这个过程中学到了很多东西. 尤其是2013年的双十一,系统准备的非常充分,技术上有很多创新,团队也得到了成长. 这篇文章是我为《程序员》杂志双十一特刊写的一篇文章,介绍了阿里数据库的核心技术. 大家都知道,双十一的零点高峰给系统带来的压力,尤其是数据库,作为整个交易系统最核心的组成部分,数据库的性能直接决定了整个系统的稳定性. 阿里巴巴(淘宝和天猫)的核心系统全部运行在PC服务器和MySQL数据库上,通过数据水平拆分实现了非常高的扩展性和可用性, 数据库的容量已经不再是系统瓶颈.
- CSDN博客推荐文章
数据库作为计算机学科中一个比较重要的分支,也是一个对于程序员来说非常好的学习方向. 平时我们用的最多的,同时也是接触最多的一定是增删改查语句,select,. update,delete等,当然,我不会拿这些再说一遍,这些都是老的掉渣的东西了. 所以我们可以学习高级数据库中所以涉及的技术. 换句话,其实就是抛开业务层的逻辑,从更加深层次的角度理解数据库. 1.数据索引技术,典型的B+树索引系列. 2.数据库故障恢复技术,我这里只提的是基于日志的恢复技术. 3.数据库系统结构,讲讲时下流行的分布式数据库系统.
数据库索引技术关系着数据的查询速度,当数据量比较小的时候,响应是没有问题,当数据库中拥有百万,千万级数据量的数据时,建立索引是必须的.
坚持分享优质有趣的原创文章,并保留作者信息和版权声明,任何问题请联系:@。

我要回帖

更多关于 sql查询不重复数据 的文章

 

随机推荐