问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问我的数据库很大,用SELECT太慢!主要是有一个BLOB字段,SELECT的

发布网友 发布时间:2022-04-15 05:45

我来回答

8个回答

懂视网 时间:2022-04-15 10:06

selectmysqlrandom数据库

import java.awt.*;
import javax.swing.*;
import java.sql.*;
import java.awt.event.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.*;
import java.util.Random;
import static java.awt.BorderLayout.*;
import java.io.File;
import java.io.IOException;
public class SwingDemo
{
Random r;
Link lk,lk1;
ResultSet rs,rs1;
public void init()
{
JFrame jf=new JFrame();
final JPanel jp=new JPanel();
jp.setPreferredSize(new Dimension(300,300));
JPanel jp1=new JPanel();
final JTextField jtf=new JTextField(20);
jp1.setLayout(new FlowLayout(FlowLayout.RIGHT));
JButton jb=new JButton("发送");
JScrollPane jsp=new JScrollPane();
jp.add(jsp);
jf.setLayout(new BorderLayout());
jf.add(jp,NORTH);
jf.add(jp1,SOUTH);
jp1.add(jtf);
jp1.add(jb);

jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String out="";
String result="";
String s=jtf.getText();
if(s.equals(""))
{
JOptionPane.showMessageDialog(null, "不能添加空白内容");

  }  else if(s.length()<4)  {  result=find(s);  }  JPanel jp2=new JPanel();  jp2.setPreferredSize(new Dimension(300,50));  JTextArea jta1=new JTextArea();  jta1.setBackground(Color.RED);  jp2.setLayout(new FlowLayout(FlowLayout.LEFT));  jp2.add(jta1);  JPanel jp3=new JPanel();  jp3.setPreferredSize(new Dimension(300,50));  JTextArea jta2=new JTextArea();  jta2.setBackground(Color.YELLOW);  jp3.setLayout(new FlowLayout(FlowLayout.RIGHT));  jp3.add(jta2);  jp.setLayout(new BoxLayout(jp,BoxLayout.Y_AXIS));  jp.add(jp2);  jp.add(jp3);  jta1.setText(s);  jta2.setText(result); } });}public String find(String s){ String result=""; try {  String sql="select *from chat1";  lk=new Link(sql);  rs=lk.sta.executeQuery(sql);  while(rs.next())  {  String string =new String(rs.getString("question"));  if(string.equals(s)||string.contains(s)||s.contains(string))  {   try   {   String sql1="select * from chat where question=+string+";   lk1=new Link(sql1);   rs1=lk1.sta.executeQuery(sql1);   while(rs1.next())   {    result=new String (rs1.getString("answer"));   }   }   catch(Exception e)   {   e.printStackTrace();   }   finally   {   lk1.closeConn();   }  }  } } catch(Exception e) {  e.printStackTrace(); } finally {  lk.closeConn(); } if(result.equals("")) {  int i=3;  int k=r.nextInt(i);  if(k==0)  result="asdfsdaf";  else if(k==1)  result="rtfdsg";  else if(k==2)  result="fgasdd"; } return result;}public static void main(String[] args){ new SwingDemo().init();}

}
连接数据库的代码
import java.sql.*;
public class Link{
//ResultSet rs;//声明结果集引用
Connection conn;//声明Connection引用
Statement sta;
public Link(String ml){//有参构造器
try{
Class.forName("com.mysql.jdbc.Driver");//加载驱动器
String url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";//url指向要访问的mysql数据库名
String name="root";//用户名
String pwd="123456";
conn=DriverManager.getConnection(url,name,pwd);//连接数据库
sta=conn.createStatement();//创建语句
//rs=sta.executeQuery(ml);//执行查询得到的结果集
}catch(SQLException e){//捕获异常并打印
e.printStackTrace();
}
catch(ClassNotFoundException e){
e.printStackTrace();}
}
public void closeConn(){//关闭数据库连接的方法
try{
//关闭结果集,语句,连接
//if(rs!=null)
// rs.close();
if(sta!=null)
sta.close();
if(conn!=null)
conn.close();
}catch(SQLException e){//捕获异常并打印
e.printStackTrace();
}
}
}

热心网友 时间:2022-04-15 07:14

放在两个表中,建立主键、索引可能是数据太大,传输速度跟不上,所以才慢可考虑用多线程播放第某一个图片时下载另外几副

热心网友 时间:2022-04-15 08:32

up,使用select时把blob字段排除在外,当需要调用blob时候再根据关键字单个调用blob记录就不会很慢了

热心网友 时间:2022-04-15 10:07

我认为最好的办法是将该数据表中的BLOB字段分离出来,因为一般查询生成树状结构等时用不到这个字段的。

热心网友 时间:2022-04-15 11:58

能不能讲的稍微具体一点!我觉得没有必要拆开,因为dbms在处理blob字段的时候本身就和一般字段不同,是把blob字段存放在另外的文件中的

热心网友 时间:2022-04-15 14:06

如果是大型数据库可以利用存储过程,返回的只是你想要的数据!!

热心网友 时间:2022-04-15 16:31

同意sharklee(苯贼) 把表拆分;BLOB字段放到另一张表里;用主键对应;

热心网友 时间:2022-04-15 19:12

我的表没有主键,另外我是要播放图片,速度很快!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑音乐怎样保存到文件中怎样把歌曲放到文件夹里 电脑上如何把歌曲做成文件夹怎么把歌曲转化为文件 如何把音频加入到电脑文件夹上怎么把歌曲放到文件夹中 海参是不是吃多长时间以后可以不用在吃了 梦见一半黑色 电吉他买了音箱还要买效果器吗 有人去过资和信百货吗? 资和信百货企业理念 资和信百货家庭季家庭季简介 资和信是什么 现在上海回宁波可以回吗2022 sql server 2008 建表 sql server 2008 批量建表 sql server 2008怎么创建一个表 王者荣耀好友送皮肤,是微信好友,在王者送我皮肤之后,我的微信上有提示吗? 如何关闭QQ版面上的图标? 手机qq如何设置不显示手机标识,只显示自定义文字 王者荣耀别人送我皮肤,我的微信和信息会有提示吗? 为什么iQOo+Neo5活力版手机壁纸老是自动换掉? 幻灯片想一行一行出字或图片怎么弄啊 我想买一只折耳猫然后说是妈妈是美短爸爸是折耳然后生了4只立耳1只折耳折耳价格是2000立耳是180 金吉拉、美国短毛猫、折耳猫、那个猫好? 折耳猫适合吃什么猫粮 怎么挑选折耳猫的猫粮 买卖二手房买卖合同公证处会给公证吗 在郸城买二手房法律给公证吗? 关于折耳猫的问题。 一个是不纯的美短,一个是高地折耳猫,买哪个比较好,都是母猫,三个月大 二手房过户,做公证有效力吗? 懂折耳猫和美短的帮我看看 二手房买卖合同到底要不要公证 如何办理二手房买卖 杭州去宁波最新的隔离政策是什么 _百度问一问 宁波市关于疫情上不了班是怎么规定的 山东德州来北仑防疫有什么规定 2022年1月上海人可以去宁波吗? 宁波回建德需要隔离么? 今天从上海回宁波要隔离吗? 现在从上海可以回镇海庄市的家吗? 宁波下高速需要什么条件最新 上海浦江,到宁波龙山,能去吗?目前情况 快手直播没有问道分组 从石家庄到宁波 问道怎么看直播,哪里看 24号银川到宁波飞机人员核算检测 青岛高铁如何抵达宁波市舟山群岛 问道官方直播平台是什么 问道有什么直播间吗 跟朋友聊天问题,求方法 最近在快手上好多问道热门,问道是不是入股 问道私服怎么引流