MYSQL上亿的表如果秒查 50

selectstatefromemaildatawherestate=0很简单的查询,但是我的表上亿了,查询太慢,,如果处理一下呢... select state from emaildata where state=0 很简单的查询,但是我的表上亿了,查询太慢,,如果处理一下呢 展开
 我来答
百科宝典
2018-02-10 · TA获得超过1.8万个赞
知道大有可为答主
回答量:6490
采纳率:77%
帮助的人:594万
展开全部

1、设计数据库表

先设计一个数据库表,用于保存用户信息,建表语句如下:

CREATE TABLE

tbl_user_info

id INT NOT NULL AUTO_INCREMENT,

user_name VARCHAR(20) NOT NULL,

age INT NOT NULL,

sex INT(1) NOT NULL,

create_dt DATE NOT NULL,

PRIMARY KEY (id)

ENGINE=InnoDB DEFAULT CHARSET=utf8;

在用户表中定义了几个字段,分别是id,user_name,age,sex,create_dt,其中id是主键,是自增长的,user_name表示用户名,age表示用户年龄,sex表示用户的性别,这里的性别用数字表示,0表示女性,1表示男性,create_dt表示创建的时间。预先在数据库中插入几条数据,数据如下。

2、定义实体类

定义一个Bean,与数据库表中的各个字段对应:

package com.imooc.jdbc;

import java.uTIl.Date;

public class UserVO {

private int id;

private String userName;

private int age;

private int sex;

private Date createDt;

public int geTId() {

return id;

}

public void seTId(int id) {

this.id = id;

}

public String getUserName() {

return userName;

}

public void setUserName(String userName) {

this.userName = userName;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public int getSex() {

return sex;

}

public void setSex(int sex) {

this.sex = sex;

}

public Date getCreateDt() {

return createDt;

}

public void setCreateDt(Date createDt) {

this.createDt = createDt;

}

@Override

public String toString() {

return “UserVO [id=” + id + “, userName=” + userName + “, age=” + age

+ “, sex=” + sex + “, createDt=” + createDt + “]”;

}

}

3、定义数据库连接类

定义一个数据库连接类,用于获取MySQL的连接

package com.imooc.jdbc;

import java.sql.ConnecTIon;

import java.sql.DriverManager;

public class DBUtil {

private static final String URI = “jdbc:mysql://192.168.2.207:3306/jdbc_demo?”

+ “user=root&password=root&useUnicode=true&characterEncoding=UTF-8”;

private static final String DRIVER = “com.mysql.jdbc.Driver”;

public static Connection connectDB() throws Exception {

//1、加载数据库驱动

Class.forName(DRIVER);

//2、获取数据库连接

Connection conn = DriverManager.getConnection(URI);

return conn;

}

}

MySQL的JDBC URL编写方式为:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值,在这个例子中我连接的数据库主机是一台远程主机,所以主机名称为远程主机的ip地址,如果数据库主机为本机,则可以定义为localhost,在参数中指定用户名为root,密码也是root,为了避免中文乱码要指定useUnicode和characterEncoding。因为连接的是MySQL数据库,所以程序一开始需要加载MySQL的数据库驱动,然后通过DriverManager.getConnection(String URL)方法获取数据库的连接。

4、实现数据库的增删改查

在获取了数据库的连接之后,就可以操作数据库了,下面分别实现数据库的增删改查操作,定义一个UserDao类用于操作数据库。

1)查询

先看查询操作,查询可以一次查询出所有的数据,也可以根据相应的条件查询。

查询所有的数据,在UserDao中定义一个queryAll()方法:

public List<UserVO> queryAll() throws Exception {

Connection conn = DBUtil.connectDB();

String sql = “SELECT * FROM tbl_user_info”;

List<UserVO> userList = new ArrayList<UserVO>();

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

while(rs.next()) {

UserVO user = new UserVO();

user.setId(rs.getInt(“id”));

user.setUserName(rs.getString(“user_name”));

user.setAge(rs.getInt(“age”));

user.setSex(rs.getInt(“sex”));

user.setCreateDt(rs.getDate(“create_dt”));

userList.add(user);

}

return userList;

}

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式