mysql 500W条记录查询大概多长时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 500W条记录查询大概多长时间相关的知识,希望对你有一定的参考价值。

//首先你的先插入500w条数据,我在mysql中建了一张表,只建了两个字段。程序跑了1个小时发生了
//Java.lang.OutOfMemoryError: Java heap space  溢出现象,所以不整了浪费时间,自己算一下,
//可能我电脑不好,1000条要执行这么久
//程序执行时间:31433
public static void main(String[] args) throws Exception 
           
                long start=System.currentTimeMillis();
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://localhost:3306/test";
                String username="root";
                String password="root";
                Connection conn=DriverManager.getConnection(url,username,password);
               
                for(int i=0;i<5000000;i++)
                  PreparedStatement ps = (PreparedStatement) conn.prepareStatement("INSERT INTO mysqltest (NAME) VALUES ('张三');");
                  int rs = ps.executeUpdate();
                
                long end=System.currentTimeMillis();
                
                System.out.println("程序执行时间:"+(end-start));
            
//你自己运行一下。
//堆空间溢出,可以去看看这里:

参考技术A 通今博古 古调单弹 弹尽粮绝

mysql初学,mysql修改,mysql查找,mysql删除,mysql基本命令

Mysql 下载地址
https://dev.mysql.com/downloads/mysql/

1、连接Mysql
格式: mysql -h主机地址 -u用户名 -p用户密码

1、连接到本机上的MYSQL。
首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql>

2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

3、退出MYSQL命令: exit (回车)

2、修改密码
格式:mysqladmin -u用户名 -p旧密码 password 新密码

mysql -u root mysql
set password for [email protected]=password(‘secret‘);
flush privileges; 更新权限

1、给root加个密码ab12。
首先在DOS下进入目录mysql\bin,然后键入以下命令
mysqladmin -u root -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、再将root的密码改为djg345。
mysqladmin -u root -p ab12 password djg345

3、增加新用户
注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on *.* to [[email protected]”%][email protected]”%[/email]” Identified by “abc”;

但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to [[email protected]][email protected][/email] identified by “abc”;

如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to [[email protected]][email protected][/email] identified by “”;

命令:create database <数据库名>
命令:show databases (注意:最后有个s)
命令:drop database <数据库名>
命令: use <数据库名>
命令:mysql> select database(); 选择当前数据库
命令 : mysql> select version(); 显示mysql版本号
命令 : mysql> select now(); 显示当前时间
命令 : SELECT DAYOFMONTH(CURRENT_DATE); 显示日
命令 : SELECT MONTH(CURRENT_DATE); 显示月
命令 : SELECT YEAR(CURRENT_DATE); 显示年
命令 : mysql> SELECT "welecome to my blog!"; 显示字符串
命令 : select ((4 * 4) / 10 ) + 25; 计算
命令 : select CONCAT(f_name, " ", l_name) AS Name from employee_data where title = ‘Marketing Executive‘; 拼接字符串
命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); 创建数据表
eg: 创建一个MyClass表
mysql> create table MyClass(
> id int(4) not null primary key auto_increment,
> name char(20) not null,
> sex int(4) not null default ‘0‘,
> degree double(16,2));
命令 : mysql> desc MyStudents 查看表结构
命令:drop table <表名>删除表
命令 : mysql> insert into MyClass values(1,‘Tom‘,96.45),(2,‘Joan‘,82.99), (2,‘Wang‘, 96.59); 插入数据
命令: select <字段1,字段2,...> from < 表名 > where < 表达式 >
命令 : mysql> select * from MyClass; 查询所有数据
命令 : mysql> select * from MyClass order by id limit 0,2; 限制前两行
命令 : mysql> delete from MyClass where id=1; 删除数据
命令 : mysql> update MyClass set name=‘Mary‘ where id=1; 更新数据

命令:alter table 表名 add字段 类型 其他; 增加字段
命令 : mysql> alter table MyClass add passtest int(4) default ‘0‘

ALTER DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; 修改数据库编码的命令
ALTER TABLE `menu` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin 修改表的编码的命令
ALTER TABLE `menu` CHANGE `text` `text` TEXT CHARACTER SET utf8 COLLATE utf8_bin 修改表的编码的命令设置字符为UTF-8即可

命令 : mysql> alter table employee add primary key(id); 加主关键字索引;
alert table employees add collumn birthdate date [after | first | last name]
命令 : mysql> alter table 表名 add unique 索引名 (字段名);
命令 : mysql> alter table employee add unique emp_name2(cardnumber);加唯一限制条件的索引

删除某个索引
mysql> alter table 表名 drop index 索引名;
例子: mysql>alter table employee drop index emp_name;

修改原字段名称及类型:
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

命令:rename table 原表名 to 新表名; 修改表名;

create table employees2 select * from employees; 复制表
create table employees2 select name, phone from employees; 如果只需要一部分内容
create temporary table emp_temp select * from employees; 创建临时表, 得有权限

drop [temporary] table [if exists] table_name [, table_name, ...]


1.导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql

2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql

3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql

例如,将aaa库备份到文件back_aaa中:
  [[email protected] root]# cd /home/data/mysql
  [[email protected] mysql]# mysqldump -u root -p --opt aaa > back_aaa

7.1 一个建库和建表的实例1
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘深圳’,
year date
); //建表结束

//以下为插入字段
insert into teacher values(”,’allen’,‘大连一中’,‘1976-10-10′);
insert into teacher values(”,’jack’,‘大连二中’,‘1975-12-23′);

如果你在mysql提示符键入上面的命令也可以,但不方便调试。
1、你可以将以上命令原样写入一个文本文件中,假设为school.sql,然后复制到c:\\下,并在DOS状态进入目录[url=file://\\mysql\\bin]\\mysql\\bin[/url],然后键入以下命令:
mysql -uroot -p密码 < c:\\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。

2、或者进入命令行后使用 mysql> source c:\\school.sql; 也可以将school.sql文件导入数据库中。

7.2 一个建库和建表的实例2
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘‘深圳‘‘,
year date
); //建表结束

//以下为插入字段
insert into teacher values(‘‘‘‘,‘‘glchengang‘‘,‘‘深圳一中‘‘,‘‘1976-10-10‘‘);
insert into teacher values(‘‘‘‘,‘‘jack‘‘,‘‘深圳一中‘‘,‘‘1975-12-23‘‘);

注:在建表中
1、将ID设为长度为3的数字字段:int(3);并让它每个记录自动加一:auto_increment;并不能为空:not null;而且让他成为主字段primary key。

2、将NAME设为长度为10的字符字段

3、将ADDRESS设为长度50的字符字段,而且缺省值为深圳。

4、将YEAR设为日期字段。

数据类型
DATE YYYY-MM-DD eg: 20100810 | 2010-08-10 范围 1000-01-01 到 9999-12-31, 中间的-可以不写, 也可以用人其他字符代提 比如 , * !(非数字字母)
DATETIME YYYY-MM-DD HH:MM:SS eg: 20100810153510 | 2010-08-10 15:35:10 范围: 1000-01-01 00:00:00 到 2037-12-31 23:59:59

YEAR
* 两位数值 1~99 1~69=>2001-2069, 70~99=>1970~1999
* 四位数值 1901~2155
* 两位数字符串 "00"~"99". 同两位数值
* 四位数字符串 同四位数值

BOOL和BOOLEAN TINYINT(1)的别名, 值: 0|1
BIGINT -9 223 372 036 854 775 808~9 223 372 036 854 775 807
INT -2 147 483 648 ~ 2 147 483 647

 

1. SET NAMES ‘utf8‘;
它相当于下面的三句指令:
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

2. 创建数据库
mysql> create database name character set utf8;

3. 创建表
CREATE TABLE `type` (
`id` int(10) unsigned NOT NULL auto_increment,
`flag_deleted` enum(‘Y‘,‘N‘) character set utf8 NOT NULL default ‘N‘,
`flag_type` int(5) NOT NULL default ‘0‘,
`type_name` varchar(50) character set utf8 NOT NULL default ‘‘,
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

4. 修改数据库成utf8的.
mysql> alter database name character set utf8;

5. 修改表默认用utf8.
mysql> alter table type character set utf8;

6. 修改字段用utf8
mysql> alter table type modify type_name varchar(50) CHARACTER SET utf8;


卸载:

1、mysql删除,一个文件都不能留
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
2、sudo rm -rf /var/db/receipts/com.mysql.*

 

如果忘记密码,强行修改:
step1:?停止Mysql服务
step2:?进入终端输入:cd /usr/local/mysql/bin/?回车后 登录管理员权限 sudo su?回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe --skip-grant-tables &?回车后mysql会自动重启(偏好设置中mysql的状态会变成running)
step3. ?输入命令 ./mysql?回车后,输入命令 FLUSH PRIVILEGES; ?回车后,输入命令 ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘你的新密码‘;


ps aux | grep mysq*


1) ps a 显示现行终端机下的所有程序,包括其他用户的程序。
2)ps -A 显示所有程序。
3)ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
4)ps -e 此参数的效果和指定"A"参数相同。
5)ps e 列出程序时,显示每个程序所使用的环境变量。
6)ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
7)ps -H 显示树状结构,表示程序间的相互关系。
8)ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
9)ps s 采用程序信号的格式显示程序状况。
10)ps S 列出程序时,包括已中断的子程序资料。
11)ps -t  指定终端机编号,并列出属于该终端机的程序的状况。
12)ps u  以用户为主的格式来显示程序状况。
13)ps x  显示所有程序,不以终端机来区分。
ps是显示当前状态处于running的进程,grep表示在这些里搜索,而ps aux是显示所有进程和其状态。


修改配置文件 配置字符集
sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf

sudo vi /etc/my.cnf

[client]部分加入:

default-character-set=utf8

[mysqld]部分加入:

character-set-server=utf8

修改完毕之后再启动mysql

 

               本文原创,未经允许,不得转载!!

以上是关于mysql 500W条记录查询大概多长时间的主要内容,如果未能解决你的问题,请参考以下文章

mysql insert 多少条会慢

在大型数据集上使用 JOIN 运行 SQL 查询

MySQL分表时机:100w?300w?500w?都对也都不对!

C++遍历mysql结果集,一万条数据花多长时间?

mysql怎么查询一条记录的前一条记录和后一条记录

mysql 联合查询 如何查询从表的最后一条记录