java jdbc查找mysql指定jdbc连接mysql数据库步骤如何实现或者说是mysql表中指定一行jdbc连接mysql数据库步骤,大佬请赐教谢谢

心有多大,舞台就有多大!
MySQL性能优化
性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间。性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等。本文介绍方法的主要有:
优化查询优化数据库结构优化MySQL服务器
  数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能。语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数。
Connections:连接MySQL服务器的次数
Uptime:MySQL服务器的上线时间;
Slow_queries:慢查询的次数;
Com_select:查询操做的次数;
Com_insert:插入操作的次数;
Com_delete:删除操作的次数;
Com_update:更新操作的次数;
查询操作是最频繁的操作,提高了查询速度可以有效提高MySQL数据库的性能。
首先要对查询语句进行分析,分析查询语句的命令是EXPLAIN语句和DESCRIBE语句。比如 EXPLAIN SELECT * FROM student
索引可以快速定位表中的某条记录。使用索引也可以提高数据库查询的速度,从而提高数据库的性能。如果不使用索引,查询语句将 表中的所有字段。这样查询的速度会很慢。如果使用了索引,查询语句只会查询索引字段。这样就减少查询的记录数,达到提高查询效率的目的。
现在看一个查询语句中没有索引的使用情况:
SELECT * FROM student
WHERE name = ‘张三’;这样会对student表中的所有数据都查询一下,对比一下name的字段是否是张三。
然后我们在name字段上建立一个名为index_name的索引:
CREATE INDEX index_name ON student(name);
现在name字段上面已经有索引了,再进行该select语句查询的速度就非常快了,不需要遍历整个表。
但是有些时候即使查询时使用的是索引,但索引并没有起作用。比如使用了LIKE关键字进行查询时,如果匹配字符串的第一个字符为‘%’,索引不会被使用。如果‘%’不是在第一个位置,索引就会被使用。
另一种情况是在表的多个字段上创建一个索引,比如
CREATE INDEX index ON student(birth,department);这样只有查询语句条件中使用字段name时,索引才会被用到。因为name字段是多列索引的第一个字段,只有查询条件中使用了name字段才会使索引index起作用。
2优化子查询
很多查询中需要使用子查询。子查询可以使查询语句很灵活,但子查询的执行效率不高。MySQL需要为内层查询语句的查询结果建立一个临时表。然后外层查询语句在临时表中查询记录。查询完毕后,MySQL需要插销这些临时表。所以在MySQL中可以使用连接查询来代替子查询。连接查询不需要建立临时表,其速度比子查询要快。
3优化数据库结构
1将字段很多的表分解成多个表
有些表在设计时设置了很多的字段。但是这个表中的有些字段的使用频率很低。当这个表的数据量很大时,查询数据的速度就会很慢。对于这种字段特别多的并且有字段的使用频率不高的表,就可以将其分解成多个表。
2增加中间表
有时需要经常查询某两个表中的几个字段。如果经常进行联表查询,就会降低MySQL数据库的查询速度。对于这种情况可以建立中间表来提高查询速度。
先分析经常需要同时查询那几个表中的那些字段。然后将这些字段建立一个中间表,并将原来那几个表的数据插入到中间表中,之后就可以使用中间表来进行查询和统计了。
3增加冗余字段
设计数据库表时尽量让表达到三范式。但是,有时为了提高查询速度,可以有意识的在表中增加冗余字段。表的规范程度越高,表与表之间的关系就越多,查询时可能经常需要在多个表之间进行连接查询,而进行连接查询会降低查询速度。比如,学生的信息存储在student表中,院系的信息存储在department表中,通过student表中的dept_id字段与department表建立关联关系。如果要查询一个学生所在系的名称,必须从student表中拿到dept_id字段,然后根据这个编号去department表中查找系的名称。如果需要经常需要进行这个操作的话,连接查询会浪费很多时间。因此可以在student表中增加一个冗余字段dept_name,这样就不用每次都进行连接查询了。其实就是一切以业务为主。
4优化插入记录的速度
插入记录时,索引和唯一性校验都会影响到插入记录的速度。而且,一次插入多条记录和多次插入一条记录所消耗的时间是不一样的。根据这些情况,分别进行不同的优化。
禁用索引:插入记录时,MySQL会根据表的索引对插入的记录进行排序。如果插入大量数据时,这些排序会降低插入的速度。为了解决这种情况,在插入记录之前先禁用索引。等插入之后再启用索引。对于新创建的表,可以先不创建索引,等记录都导入以后再创建索引。这样可以提高导入数据的速度。
ALTER TABLE 表名 DISABLE KEYS;
ALTER TABLE 表名 ENABLE KEYS;
优化INSERT语句:当大量插入数据时,建议使用一个INSERT语句插入多条记录,而不是使用多次INSERT语句。这样可以减少与数据库之间的连接等操作。
5分析表,检查表,和优化表
分析表的主要作用是分析关键字的分布。检查表的作用是检查表是否存在错误。优化表主要作用是消除删除或者更新造成的空间浪费。
ANALYZE TABLE 表名;
使用ANALYZE TABLE分析表的过程中,数据库系统会对表加一个只读锁。在分析表的过程中,只能读取表的内容,不能插入和更新表的内容。ANALYZE TABLE 语句能够分析InnoDB和MyISAM类型的表。
检查表使用CHECK TABLE语句。在执行过程中也会给表加上只读锁。
优化表使用OPTIMIZE TABLE语句。只能优化表中的VARCHAR,BLOB,TEXT类型的字段。OPTIMIZE TABLE语句可以消除删除和更新造成的磁盘碎片,从而减少空间浪费。因为如果一个表使用了TEXT或者BLOB这样的数据类型,那么更新,删除等操作就会造成磁盘空间的浪费。因为,更新和删除操作以后,以前分配的磁盘空间不会自动回收。使用OPTIMIZE TABLE语句可以将这些磁盘碎片整理出来,以便再利用。
4 优化MySQL服务器
硬件上的优化:增加内存和提高磁盘读写速度,都可以提高MySQL数据库的查询,更新的速度。另一种提高MySQL性能的方式是使用多块磁盘来存储数据。因为可以从多块磁盘上并行读取数据,这样可以提高读取数据的速度。
MySQL参数的优化:内存中会为MySQL保留部分的缓冲区。这些缓冲区可以提高MySQL的速度。缓冲区的大小都是在MySQL的配置文件中进行设置的。
下面对几个重要的参数进行详细介绍:
key_buffer_size:表示索引缓存的大小。这个值越大,使用索引进行查询的速度就越快table_cache:表示同时打开的表的个数。这个值越大,能同时打开的表的个数就越多。这个值不是越大越好,因为同时打开的表过多会影响操作系统的性能。query_cache_size:表示查询缓冲区的大小。使用查询缓存区可以提高查询的速度。这个方式只使用与修改操作少且经常执行相同的查询操作的情况;默认值是0.Query_cache_type:表示查询缓存区的开启状态。0表示关闭,1表示开启。Max_connections:表示数据库的最大连接数。这个连接数不是越大越好,因为连接会浪费内存的资源。Sort_buffer_size:排序缓存区的大小,这个值越大,排序就越快。Innodb_buffer_pool_size:表示InnoDB类型的表和索引的最大缓存。这个值越大,查询的速度就会越快。这个值太大了就会影响操作系统的性能。
合理配置这些参数可以提高MySQL数据库的性能。配置完参数后,需要重启MySQL服务才会生效。
没有更多推荐了,当前标签: MySQL
17:46 阅读:7131 评论:13读取数据库如何只取出一条数据????请赐教!【php吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:156,086贴子:
读取数据库如何只取出一条数据????请赐教!收藏
遇到一个问题,我把一个EXCEL表格导入了数据库,表里有数据,都可以循环出来,我想做一个即时查询,也就是说想通过一个关键字把数据库中其中一行查询出来我有个表单名字是
'select'核心代码如下://链接数据库(不写了,没问题)if($_GET){
if($_GET['select'] === ''){
echo('&script&alert ("不能查询空数据");&/scipt&');
$select = "select * from `xxxx`.`xxxx`";
$query = mysql_query($select);
while($fetch = mysql_fetch_array($query)){
echo($fetch['id'].$fetch['kk'].$fetch['xx']);
}}#代码结束以上代码查询的结果是全部都查询出来了,数据库内所有的数据,现在想实现的是通过$_GET的关键词只查询出相应的一行.
如果要在不同云之间进行管理,监控或安全运维,可自由注册并使用行云管家.行云管家将改变你的工作方式,为此让你节省了几千个小时,让你有更多的时间去实现自己梦想.
是正则也好,还是怎么样?请各位赐教一二!感激不尽
select * from tablename where id=$id limit 1;
$data=$_GET['select']; $sql=&SELECT * FROM 表名 WHERE id=$data LIMIT 1&; 用where限定条件,要求数据库只返回字段'id'中与用户的GET请求中的数据一致的记录,LIMIT 1限定只返回第一条记录
感谢大家的帮助,我的问题解决了!核心代码如下:&?php
if($_POST) {
if($_POST['select'] === '') {
echo('&script&alert ("请不要查询空信息!");&/script&');
$select = "select * from `tbl_name`";
$query = mysql_query($select);
while($fetch = mysql_fetch_array($query)) {
if($_POST['select'] === $fetch['xh']) {
$limit = "select * from `tbl_name` where `tbl_name`.`id`='".$fetch['id']."'";
$limit_query = mysql_query($limit);
$limit_fetch = mysql_fetch_array($limit_query);
echo('&span&当前查询型号:&&&/span&&span style="color:"&'.$limit_fetch['xh'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['mz'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['ldj'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['ycl'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['jk'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['cj'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$limit_fetch['mj'].'&/span&|');
?&我的思想是,首先判断是否有GET提交然后查询数据库,利用mysql_fetch_array函数把查询出的数据转化为数组,然后利用while循环循环出所有数据得到$fetch['id']然后在循环内做判断是否GET的数据与数据库数组字段是否相同,如果相同就再执行一次SQL语句查询所GET的数据所在的字段,然后利用ID的唯一性显示出所查询的数据但是我没有用limit,也可以成功显示出一条的数据我分析是因为我已经把GET字段完全匹配数据库内相同的字段,而我所查询的条件就是查询字段与ID相同的那一行数据读出来不知道对不对!还请各位批评指正!再次感谢!
查询一次,实际执行了2次数据库查询,是不是有点儿烦琐,会加重数据库负担。
1.你的代码是先取出tbl_name中的全部信息,然后遍历每条记录,如果该记录的'xh'字段和$_POST['select']相同,则返回该条记录信息,并继续循环遍历。方法是正确的,但是可以稍微优化下,你可以想一下,如果按你的思路,假设你的表中有1000条记录,其中100条记录的'xh'字段是满足条件的,则你会执行(1+100)次查询,显然浪费了时间。2.代码思路我觉得有点想复杂了,可以直接找出需要的那些记录,即$select = "select * from `tbl_name` where `tbl_name`.`xh`='".$_POST['select']."'";这样出来的就是你要的那些记录了,然后再遍历这个sql的结果,打印出每条记录的所需信息,这样1条sql就可以了。if ($_POST) {
if ($_POST['select'] === '') {
echo('&script&alert ("请不要查询空信息!");&/script&');
$select = "select * from `tbl_name` where `tbl_name`.`xh`='".$_POST['select']."'";
$query = mysql_query($select);
while ($fetch = mysql_fetch_array($query)) {
echo('&span&当前查询型号:&&&/span&&span style="color:"&'.$fetch['xh'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['mz'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['ldj'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['ycl'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['jk'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['cj'].'&/span&|&span&囧囧囧:&&&/span&&span style="color:"&'.$fetch['mj'].'&/span&|');
登录百度帐号61 条评论分享收藏感谢收起赞同 1添加评论分享收藏感谢收起c# mysql简单查询操作 请赐教_百度知道
c# mysql简单查询操作 请赐教
StringmysqlStr=&连接语句&;MySqlConnectionmysql=newMySqlConnection(mysqlStr);mysql.Open();成功连接上mysql数据库了我该怎样做一个简单的查询?越简单越好,请赐教。...
String mysqlStr = &连接语句&;
MySqlConnection mysql = new MySqlConnection(mysqlStr);
mysql.Open();成功连接上mysql数据库了我该怎样做一个简单的查询?
越简单越好,请赐教。
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
sinoxlive知道合伙人
采纳数:477
获赞数:921
使用connection对象创建mysqlcommand对象,设置查询的sql语句及参数,然后使用excutereader对象,然后使用户reader对象循环每一行,并读出需要的列的数据。读取的过程中根据需要使用reader.IsDBNull(列数或是列名)判断数据是否为null如下面所示:
spirithjb知道合伙人
来自电脑网络类芝麻团
采纳数:119
获赞数:254
参与团队:
select * from [tables]
来自:求助得到的回答
zzuhjf知道合伙人
MySqlConnection mysql = new MySqlConnection(mysqlStr);
mysql.Open();MySqlCommand cmd=new MySqlCommand (”sql语句“,mysql); DataTable dt = new DataTable();
MySqlDataReader
sdr = cmd.ExecuteReader();
if (sdr.HasRows)
dt.Load(sdr);
if (!object.Equals(sdr, null))
sdr.Close();
sdr.Dispose();
}mysql .Close(); mysql .Dispose();
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 jdbc连接mysql 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信