㈠ MYSQL update 10W条数据太慢我该如何处理
tel 字段简历索引了吗?
给猜搭启你个建议,可能你更新的字段都是索引字段,建议先把索引都删掉,更新完数据之后枝李在建立对穗如应的索引。
㈡ 数据条数太多,插入到数据库有延迟,怎么解决
1.我们往数据库中导入的数据通常是有固定的模板的,也就是有列头,但是可能excel中的一条数据分布存储在不同的数据表中,那么我们怎么来导入了,我们可以在类文件中直接拼接sql语句插入,这样做的话我认为比较麻烦。我的做法是:在数据中建一个中间表暂且叫做Temp表跟excel中列一一对应,其中表中多加state列用来标识数据验证失败还是成功的(0代表数据没有问题,-1代表有问题)、failReason记录导入失败原因,然后再添加一个配置文件来做excel列和数据表的映射。 2.要导入的数据通常要做验证,那些不符合导入规则的数据时不允许或者不能导入的。我把数据分两步来验证,一部分在代码段验证,一部分在数据库验证。至于怎么分那就自己去根据情况分析了。我是把诸如字符长度限制,正则表达式规则限制等放 在代码段验证,把诸如数据库中字典值是否存在等要访问数据库的验证放在数据中验证,这样的话就可以减少访问数据库的次数。把再客户端验证过的数据,不管是通过的不同过的都插入到temp表中,只是state值不同。 3.然后怎么把插入temp中数据分别插入到不同的数据表中了,大家一定想到了触发器,没有错,我用的就是after触发器,在我把excel中的数据插入到temp表中的时候,那么就会触发after触发器,在触发器中对插入的数据进行处理,如果插入的数据state值为-1,代表在代码端的验证就没有通过,那么就不需要进行下一步处理了,如果state值为0,那么在触发器中接着处理,比如检测字典值在字典表中存不存在等,如果不满足要求就把temp表中的当前插入的记录state值改成-1,把校验失败原因更新到failReason字段中,不再处理。如果一切校验都没有问题的话,那么就编写插入语句,把数据插入到不同的表中去。 4.数据导入完成了,那么那些有问题数据怎么办了?把它查询出来生成一个按原模板后加一列“失败原因”导成excel文件,其实就是state值为-1的那些记录,然后返回给用户查看。 通过以上步骤之后那么整个导入功能就完成了,以上只是一种思路,望大家完善。 本站技术原创栏目文章均为中睿原创或编译,
㈢ 在使用EXCEL数据透视后,进行刷新表格,出现数据透视表更新字段很慢,不知道为什么
应该是引用的数据源太大了吧
㈣ 是不是数据表中字段越多,读取速度越慢
对于MSSQL来说,你的两种方法的速度是没有什行型么区别的,但实际中你会用前一种方法么?SELECT * 在实际运用的很多,虽然相对而悉岁言是要搜索数据库的全部资源,因而速度会慢一些,但是方便而且明了.
具体用SELECT 字段,还是SELECT *应该根据你的需要来选择,搜索的效率来说,小数据量是没有影响档陆猜的.
楼主另外一个问题,如果同一个页面多次用到一个字段,那肯定推荐用<%=id%>,因为你这样id=rs("id")本身就是要简化程序,而且也方便修改.
最重要的是,记录集rs打开要及时关闭,打开的时候把内容赋值给一个变量,然后再用,是很方便吧:)
㈤ mysql 数据量大 加了索引 聚类查询还是慢
可以根据条件去添加索引,
一、
所有mysql索引列类型都可以被索引,对来相关类使用索引可以提高select查询性能,根据mysql索引数,可以是最大索引与最小索引,每种存储引擎对每个表的至少支持16的索引。总索引长度为256字节。
mysim和innodb存储引擎的表默认创建索引都是btree索引,目前mysql还不支持函数索引,但支持前缘索引,对字段前N个字符创建索引
二、mysql创建索引语法
Create [unioun|fulltext|spatial] index indexname[using indextype] on tablename( tablenamecol)
index_col_name:
col_name[ (length)][asc |desc]
如果你创建索引时搞错了,需要修改mysql索引我们可以用alert来修改索引,语法与create index创建索引差不多,我们就不说了,卜告可以查看相关手册。
下面我们来看一个关于mysql创建索引实例教程。
mysql>create index cityname on city(city(2));
Query Ok,600 rows affected (0.26 sec)
Records :600 Duplicates:0 Warings 0:
我们现在来以city为条件进行查询,如下面。
->explain select * from city where city ='www.111cn.net' G
型带明id:1
......
possible_keys:cityname
key:cityname
好了,现在我们来看看mysql删除索引等实例
Drop indexname on tablename
实例,我现在要删除刚才创建city索引
>drop index cityname on city;
Query ok, .....
不过通常对百万级数据的查询或者其行肆他操作,都改换其他的大型的数据库了
㈥ 数据库字段太多,修改字段就会卡,添加也添加不了,提示字段大小大于多少,要把类型改成text或blob
添加不了,你可以尝试将这个字段给个默认值,或缓链磨者允许唤模为null
看你的情况应该是数据库表在设计的时候可能就有扰斗问题
㈦ java查询一张表时候同时添加数据到这张表效率会很慢怎么解决,会造成锁表的情况吗
当然可行.我不知道你的理解脊缺是在什么地方切入的.但是这个问题不太需要涉及到JDBC也就是数据库的读写的内容.
实际上的理解你应该紧扣住"实体"这个关键点.JDBC只不过是达到目的的一个手段,实体Bean作为参数在不同的类之间传递才是关键.
我们举个例子,这个bank表简单的具有:ID, bank_name, address 这3个属性.而实际的项目中,往往一张表能有十几个字段甚至更多.
一开始的时候,程序员们都是这样来读取数据库: 例如这张bank表,从数据库把某一个ID=1的记录读出来以后,直接把3个字段值返回给调用该数据库类的方法(例如可以采用封装到一个数组中去的方法).这样当字段变多以后会变得非常的麻烦, 例如,很可能段蠢一不小心把返回的字段给弄颠倒了.
后来这样的方法进过改进,就成了现在的以实体类封装数据并进行传递的方式.例如一张订单表:你尽管可能觉得order_date和order_data这2个字段非常容易混淆.但是如果date是日期类型,data是String类型,那么你怎么也不可能把这2个值赋予给错误的属性.
那么在使用中,首先,你读出了数据之后,我们再拿bank表作例子,ID=1的表里的数据如下:ID=1,name=abc,address=nanjing,那么你实例化一个bank类,然后把这3个值一一 赋予对应的属性(调用set方法)
而在将这个实体类返回调用者之后,可以调用get方法来查看樱燃辩.
如果需要看具体的代码的话可以继续追问
㈧ sql多加一个字段过滤后特别慢
你的这个查询要优化的地方不是not in, 而是整个查询的结构: 使用了太多的子查询,而且都是查找的相同的表(GISDUCT表查询4次),这肯定不是好的查询方法,应该把你要达到的目的再思考,转化成合适的查询语句。
个人认为,你算OCCUPYCOUNT和TOTALCOUNT的子查询应该可以在一个查做笑询中搞定的,因为都是查询GISDUCT表,只是统计取值的条件有所不同厅旁罢了,而按条件统计纯伏含可以用类似“case when 条件 then count(xxx) else 0 end”的结构来实现。有问题可再讨论。
㈨ 数据量变多之后,为什么insert数据的时候速度会变慢
insert,会产生redo日志。而日志缓冲区衡前败比较小,这就会造成大量日志信悔笑息要写入磁盘。所以大量insert的时咐颤候,要进行不停的写磁盘。所以慢
㈩ ORACLE 插入大量数据过慢
你是用insert语句,还是用派丛稿oracle的尘孝导入功能?
反正插入数据快的话,你先把索引的语句备份一下,然郑高后全部drop掉
然后再执行插入操作,插入结束后再建立索引
反正这事也快不了,你先看看我说的那种得多长时间吧