mysql语句与性能优化问题 5C

一个mysql表有40W条数据。
表结构如下!图片说明
问题是:获取f3重复字段的前十条数据。
考虑性能!!!

10个回答

你这个问题就有不合理的地方,f3重复字段可能有很多种 比如 f3字段有10条a重复 10w条b重复 那么你究竟要取出哪一个重复字段的前10条呢?如果是所有f3有重复字段的所有重复项的前10条,那么查出来就不只10条啊。

regrethh
默默努力的小程序员 就是要取出每个重复字段的前十条
大约 2 年之前 回复

你可以参考一下这篇文章的相关介绍 http://www.cnblogs.com/lyroge/p/3837886.html

问题 可以理解成 每门课的前十名。求各位大佬指点。

select * from 表名 where 重复的字段 in (select 重复的字段 from 表名 group by 重复的字段 having count(1) > 1);

regrethh
默默努力的小程序员 原理上可行,性能太差了。不执行个3 5个小时出不来。
大约 2 年之前 回复

建立索引,走索引查询效率就不会那么差了

regrethh
默默努力的小程序员 能具体些么。最好写个sql语句。
大约 2 年之前 回复

SELECT * FROM ( SELECT F3 FROM 表 GROUP BY F3 ORDER BY F3 LIMIT 10) T1 JOIN 表 T2 ON T1.F3 = T2.F3
先将前十条重复数据找出来,做关联将这些查询出来

qq_22590821
引火上身 回复regrethh: 理解失误,下面有一个,看看是不是您想要的!
大约 2 年之前 回复
regrethh
默默努力的小程序员 就是类似于,查询每一门课程前十名的分数
大约 2 年之前 回复
regrethh
默默努力的小程序员 老哥,我想要的是每一个分
大约 2 年之前 回复

楼上,我想要的是每一个f3重复字段,f4字段前十条数据。

SELECT
*
FROM
表 T1
WHERE
(
SELECT
count(1)
FROM
表 T2
WHERE
T2. F3 = T1. F3
AND T2. F4 >= T1. F4
) <= 10;

看看这个是不是你想要的吧!
qq_22590821
引火上身 问问做大数据的哥们们吧!!
大约 2 年之前 回复
qq_22590821
引火上身 存储过程也仅是单次调用啊,好像存储过程也不能帮你实现这个吧,存储过程是对语句的预编译,对查询能减少编译时间,但是数据量大的情况下也是会宕机的呀!
大约 2 年之前 回复
regrethh
默默努力的小程序员 回复引火上身: 问题现在就是要靠数据库工具实现啊。存储过程老哥研究的深么?
大约 2 年之前 回复
qq_22590821
引火上身 简单拿数据库工具是没法实现的,必须有程序优化的支撑!
大约 2 年之前 回复
regrethh
默默努力的小程序员 恩,你说的是后台代码连接mysql
大约 2 年之前 回复
qq_22590821
引火上身 回复regrethh: 分而食之,将40W数据拆分使用多线程/多次进行查询将结果组合就是你想要的数据了,如果一次性查询40w数据是很容易宕机的,基本大数据都是这么处理的吧!这只是个人理解,希望帮到您!
大约 2 年之前 回复
regrethh
默默努力的小程序员 是我想要的。但是执行速率太慢。因为数据库里存放了40W条数据。
大约 2 年之前 回复

select t1.f2 t1f2,t1.f3 t1f3,t1.f4 t1f4 from ti group by t1.f3 union all
select t2.f2 t2f2,t2.f3 t2f3,t2.f4 t2f4 from t2 group by t2.f4 limit 10

用存储过程把,一条sql很费时间和资源,我试过在1亿条记录的数据库中查询指定3000个name的各自最后十条记录,用功能近30分钟,然后用存储过程写,就0.75s

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
mysql中的性能优化问题
count(*) 当需要统计结果的行数时,尽量用count(*),而不是使用count(某一列)。当存在where条件时,需要先扫描条件中指定的数据,如果子条件中的数据过多,在统计行数时,可以使用相反的where条件,再用总数减去相反条件下的行数即可。 优化limit分页 如果要使用limit 1000, 20, 需要查询1020条记录,最后只返回后20条记录,前面查询到的1000条记录...
MySQL性能优化问题
我做了一个MySQL性能优化测试,但是测试结果让我感到惊讶。rnrn首先,我为我的测试准备了几个表,它们是“t_Worker_考勤_300 w(300万数据)、t_Worker_考勤_1000 w(1000万数据)、t_Worker_考勤_1Y(1亿数据)、t_Worker_考勤_4y(4亿数据)”。rnrn每个表都有相同的字段,相同的索引,它们是被复制粘贴的,包括4亿的数据量也从300万个数据增加。rnrn据我理解,MySQL的性能肯定会受到数据量大小的严重影响,但结果已经困扰了我整整一周。我几乎已经测试了我能想到的场景,但是它们的执行时间是一样的!rnrn这是一个新的MySQL 5.6.16服务器,我测试了我能想到的任何场景,包括内部连接.rnrn为了节约每个人的时间,这里我将表信息全部举列在这里:rn[code=sql]A) SHOW CREATE TABLE t_worker_attendance_4yrnrnCREATE TABLE `t_worker_attendance_4y` (rn`id` bigint(20) NOT NULL ,rn`attendance_id` char(32) NOT NULL,rn`worker_id` char(32) NOT NULL,rn`subcontractor_id` char(32) NOT NULL ,rn`project_id` char(32) NOT NULL ,rn`sign_date` date NOT NULL ,rn`sign_type` char(2) NOT NULL ,rn`latitude` double DEFAULT NULL,rn`longitude` double DEFAULT NULL ,rn`sign_wages` decimal(16,2) DEFAULT NULL ,rn`confirm_wages` decimal(16,2) DEFAULT NULL ,rn`work_content` varchar(60) DEFAULT NULL ,rn`team_leader_id` char(32) DEFAULT NULL,rn`sign_state` char(2) NOT NULL ,rn`confirm_date` date DEFAULT NULL ,rn`sign_mode` char(2) DEFAULT NULL ,rn`checkin_time` datetime DEFAULT NULL ,rn`checkout_time` datetime DEFAULT NULL , rn`sign_hours` decimal(6,1) DEFAULT NULL ,rn`overtime` decimal(6,1) DEFAULT NULL ,rn`confirm_hours` decimal(6,1) DEFAULT NULL ,rn`signimg` varchar(200) DEFAULT NULL ,rn`signoutimg` varchar(200) DEFAULT NULL ,rn`photocheck` char(2) DEFAULT NULL ,rn`machine_type` varchar(2) DEFAULT '1' ,rn`project_coordinate` text ,rn`floor_num` varchar(200) DEFAULT NULL ,rn`device_serial_no` varchar(32) DEFAULT NULL ,rnKEY `checkin_time` (`checkin_time`),rnKEY `worker_id` (`worker_id`),rnKEY `project_id` (`project_id`),rnKEY `subcontractor_id` (`subcontractor_id`),rnKEY `sign_date` (`sign_date`),rnKEY `project_id_2` (`project_id`,`sign_date`)rn) ENGINE=InnoDB DEFAULT CHARSET=utf8[/code]rnrn[code=sql]B) SHOW INDEX FROM t_worker_attendance_4yrnrn+------------------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+rn| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |rn+------------------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+rn| t_worker_attendance_4y | 1 | checkin_time | 1 | checkin_time | A | 5017494 | NULL | NULL | YES | BTREE | | |rn| t_worker_attendance_4y | 1 | worker_id | 1 | worker_id | A | 1686552 | NULL | NULL | | BTREE | | |rn| t_worker_attendance_4y | 1 | project_id | 1 | project_id | A | 102450 | NULL | NULL | | BTREE | | |rn| t_worker_attendance_4y | 1 | subcontractor_id | 1 | subcontractor_id | A | 380473 | NULL | NULL | | BTREE | | |rn| t_worker_attendance_4y | 1 | sign_date | 1 | sign_date | A | 512643 | NULL | NULL | | BTREE | | |rn| t_worker_attendance_4y | 1 | project_id_2 | 1 | project_id | A | 102059 | NULL | NULL | | BTREE | | |rn| t_worker_attendance_4y | 1 | project_id_2 | 2 | sign_date | A | 1776104 | NULL | NULL | | BTREE | | |rn+------------------------+------------+------------------+--------------+------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+[/code]rnrn[code=sql]C) EXPLAIN SELECT SQL_NO_CACHE tw.project_id, tw.sign_date FROM t_worker_attendance_4y tw WHERE tw.project_id = '39235664ba734887b298ee568fbb66fb' AND sign_date >= '07/01/2018' AND sign_date < '08/01/2018' ;rn+----+-------------+-------+------+-----------------------------------+--------------+---------+-------+----------+--------------------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+-------------+-------+------+-----------------------------------+--------------+---------+-------+----------+--------------------------+rn| 1 | SIMPLE | tw | ref | project_id,sign_date,project_id_2 | project_id_2 | 96 | const | 54134596 | Using where; Using index |rn+----+-------------+-------+------+-----------------------------------+--------------+---------+-------+----------+--------------------------+[/code]rnrn它们都通过了相同的联合索引rn[code=sql]SELECT tw.project_id, tw.sign_date FROM t_worker_attendance_300w tw rnWHERE tw.project_id = '39235664ba734887b298ee568fbb66fb' rnAND sgin_date >= '07/01/2018' rnAND sgin_date < '08/01/2018' LIMIT 0,10000;rnrnExecution time: 0.02 sec[/code]rn[code=sql]SELECT tw.project_id, tw.sign_date FROM t_worker_attendance_1000w tw rnWHERE tw.project_id = '39235664ba734887b298ee568fbb66fb' rnAND sgin_date >= '07/01/2018' rnAND sgin_date < '08/01/2018' LIMIT 0,10000;rnrnExecution time: 0.01 sec[/code]rn[code=sql]SELECT tw.project_id, tw.sign_date FROM t_worker_attendance_1y tw rnWHERE tw.project_id = '39235664ba734887b298ee568fbb66fb' rnAND sgin_date >= '07/01/2018' rnAND sgin_date < '08/01/2018' LIMIT 0,10000;rnrnExecution time: 0.02 sec[/code]rn[code=sql]SELECT tw.project_id, tw.sign_date FROM t_worker_attendance_4y tw rnWHERE tw.project_id = '39235664ba734887b298ee568fbb66fb' rnAND sgin_date >= '07/01/2018' rnAND sgin_date < '08/01/2018' LIMIT 0,10000;rnrnExecution time: 0.02 sec[/code]rn......rnrn我猜想MySQL的查询性能会随着数据量的增加而急剧下降,但两者并没有太大的不同。因此,我无法优化我的查询。我不知道何时实现表分区计划或子数据库子表计划。rnrn我想知道的是,为什么小数据量索引的执行速度与大数据量索引的执行速度相同。如果你能帮我,我非常感谢你。
sql语句性能优化问题
各位专家,帮我看看这个过程如何才能最优化:rn rn/****** Object: StoredProcedure [dbo].[fz_PatientAutoFZ] Script Date: 10/20/2012 08:46:29 ******/rnSET ANSI_NULLS ONrnGOrnSET QUOTED_IDENTIFIER OFFrnGOrnrnALTER PROCEDURE [dbo].[fz_PatientAutoFZ]rn@dept varchar(100), --科室列表 rn@hl varchar(50), --参与自动分诊的病人号别列表rn@v_date varchar(20), --分诊日期 rn@d_p_count int, --每一个大夫要排的病人总数rn@opera varchar(10), --分诊人编码rn@time_stage varchar(10), --号段---上、下午rn@station_sn int -- 分诊台号rn--@clinic_room_sn_list varchar(max) --分管诊室列表rnASrnbegin rn declare rn @dept_sn varchar(50),--科室编号 rn @dept_count int, --科室总数 rn @doct_sn varchar(10),--医生序号 rn @room_name varchar(50), rn @room_serial int , rn @doct_count int, --医生总数 rn @p_id varchar(12), --病人ID rn @times int, --院次 rn @p_count int, --病人总数 rn @i int, --计数器 rn @j int, --计数器 rn @gh_no varchar(10) --挂号时产生的大顺序号 rn--set @dept='4010401,4010201,4020101' rn rn/* rn没有分诊过的病人他的字段gh_sequence中的值应该为0,如果不为0则被视为 rn*/ rn--取得科室列表 rn select * rn into #dept rn from zd_unit_code (nolock) rn where --charindex(unit_sn,@dept)>0 rn unit_sn = @dept rn----order by unit_sn desc rn set @dept_count=@@rowcount rn rn --取得出诊病人的列表,0:在1:不在2:暂时离开 rn/* select * rn into #clinic_room rn from mz_clinic_room rn where open_flag in ('0') rn and charindex(dept_sn,@dept)>0 rn and patient_count<@d_p_count rn if @@rowcount=0 rn return 100*/ rn-- if @hl = '12' --01是普通号 rn-- update mz_visit_table set max_trans_no = gh_sn, gh_sequence = gh_sn where (DATEDIFF(DD,visit_date,--GETDATE()) = 0) and (doctor_code is not null) and (max_trans_no is null or gh_sequence is null) rn rn rn rn --update mz_visit_table set gh_sequence = gh_sn where (gh_sequence is null) and (DATEDIFF(DD,visit_date,GETDATE()) = 0) and (visit_dept = @dept) --and (clinic_type = @hl) rn rn --visit_flag:1未分诊,6到诊台,2已分诊,3正就诊,4就诊完毕,5已通知,9退号 rn --取得待诊病人的列表,只有已分诊、已到诊、已通知的病人才能参与自动排序分诊 rn select * rn into #temp_visit rn from mz_visit_table (nolock) rn where datediff(dd,gh_date,@v_date)=0 rn and (visit_flag = '1' or visit_flag = 'J') --in ('1','J') rn --and charindex(clinic_type,@hl) > 0 rn and clinic_type = @hl rn ----and isnull(ampm,'%') like @time_stage --and max_trans_no is not null rn --AND charindex(visit_dept,@dept)>0 rn and visit_dept = @dept rn AND (doctor_code IS NULL OR rn exists(select * from mz_clinic_room arn where a.open_flag='1'rn and a.dept_sn=@dept rn and a.patient_count<@d_p_countrn and a.clinic_type= @hl rn and a.fz_station_sn= @station_sn) ) rn order by isnull(max_trans_no,gh_sn),gh_sn,gh_date --这时的visit_date就是病人到诊的时间了 rn rn delete from #temp_visit where (visit_flag = 'J') and (max_trans_no is not null) and (doctor_code is not null) rn rnwhile (select count(*) from #dept)>0 --科室循环 rn begin rn set @dept_sn = (select top 1 unit_sn from #dept) rn set @p_count = (select count(*) from #temp_visit where gh_dept like @dept_sn) rn rn select * rn into #clinic_room rn from mz_clinic_room (nolock) rn where open_flag = '1' --in ('1') rn --and charindex(dept_sn,@dept)>0 rn and dept_sn = @dept rn and isnull(patient_count,0)<@d_p_count rn --AND charindex(clinic_type,@hl) > 0 rn and clinic_type = @hl rn and fz_station_sn = @station_sn rn AND doctor_sn IS NOT NULL rn and ltrim(doctor_sn) <> '' rn ORDER BY patient_count,room_serial rn rn --SELECT * FROM #clinic_room rn rn if @@rowcount=0 rn begin rn delete from #dept where unit_sn like @dept_sn rn drop table #clinic_room rn continue rn end rn rn rn rn set @i = 1 rn while 1=1 --病人循环 rn begin rn set @doct_count = (select count(*) from #clinic_room where --charindex(dept_sn,@dept_sn) > 0) rn dept_sn = @dept_sn) rn if @doct_count = 0 rn break rn rn delete from #clinic_room where dept_sn like @dept_sn and patient_count>=@d_p_count rn if not exists (select dept_sn from #clinic_room where dept_sn like @dept_sn and (patient_count<@d_p_count OR patient_count IS NULL)) rn begin rn break rn end rn if not exists (select patient_id from #temp_visit where rn charindex(gh_dept,@dept_sn) > 0 AND ((#temp_visit.visit_flag = '1') or (#temp_visit.visit_flag = 'J'))) rn BREAK rn rn --set @doct_sn = (select top 1 doctor_sn from #clinic_room where --charindex(dept_sn,@dept_sn)>0rn --dept_sn = @dept_sn order by patient_count,room_serial) rn --set @room_name = (select top 1 room_name from #clinic_room where --charindex(dept_sn,@dept_sn)>0rn --dept_sn = @dept_sn order by patient_count,room_serial) rn --set @room_serial = (select top 1 room_serial from #clinic_room where --charindex(dept_sn,@dept_sn)>0rn --dept_sn = @dept_sn order by patient_count,room_serial) rn --set @p_id = (select top 1 patient_id from #temp_visit --where isnull(doctor_code,'')='' rn --order by ISNULL(max_trans_no,gh_sn),gh_sn/*gh_date*/) rn --set @times = (select top 1 times from #temp_visit --where isnull(doctor_code,'')='' rn --order by ISNULL(max_trans_no,gh_sn),gh_sn/*gh_date*/) rn --set @gh_no = (select top 1 gh_sn from #temp_visit --where isnull(doctor_code,'')='' rn --order by ISNULL(max_trans_no,gh_sn),gh_sn/*gh_date*/) ---20121019rn rn select top 1 @doct_sn=doctor_sn,@room_name=room_name,@room_serial=room_serial rn from #clinic_room where --charindex(dept_sn,@dept_sn)>0rn dept_sn =@dept_sn order by patient_count,room_serialrn rn select top 1 @p_id=patient_id,@times=times,@gh_no=gh_sn rn from #temp_visit --where isnull(doctor_code,'')='' rn order by gh_sn rn rn rn rn update #temp_visit rn set rn rn #temp_visit.doctor_code = @doct_sn, rn #temp_visit.clinic_opera= @opera, rn #temp_visit.visit_flag = '2', rn #temp_visit.gh_sequence = @gh_no rn where #temp_visit.patient_id = @p_id rn and #temp_visit.times = @times rn and charindex(#temp_visit.visit_flag,'1,J') > 0 rn and #temp_visit.visit_dept = @dept_sn rn rn update #clinic_room rn set patient_count = isnull(patient_count,0)+1 rn where room_name = @room_name rn and room_serial = @room_serial rn and dept_sn = @dept_sn rn rn ----delete from #temp_visit where patient_id = @p_id and times = @times and visit_flag = '6' rn rn end rn rn-- SELECT * FROM #temp_visit rn rn update mz_visit_table rn set --mz_visit_table.gh_sequence = v.gh_sequence, rn mz_visit_table.doctor_code = CASE WHEN mz_visit_table.doctor_code IS NULL THEN v.doctor_code ELSE mz_visit_table.doctor_code END, rn mz_visit_table.clinic_opera = v.clinic_opera, ---20121019 rn mz_visit_table.visit_flag = case when mz_visit_table.visit_flag = 'J' then 'J' else v.visit_flag end rn -- mz_visit_table.max_trans_no = v.gh_sequence rn from #temp_visit v rn where mz_visit_table.patient_id = v.patient_id rn and mz_visit_table.times = v.times rn --and isnull(v.doctor_code,'') <> '' rn rn delete from #dept where unit_sn like @dept_sn rnend rn rnupdate mz_clinic_room rn set patient_count = isnull((select count(*) from mz_visit_table where --charindex(visit_dept,@dept)>0rn visit_dept = @dept and datediff(dd,gh_date,@v_date)=0 and visit_flag in ('2','J') and doctor_code = mz_clinic_room.doctor_sn) ,0) rn where open_flag='1' rn and dept_sn = @dept rn rn drop table #dept rn-- DROP TABLE #clinic_room rn drop table #temp_visit rn select 100rn return 100rnrnendrnrn先谢谢各位了。
关于mybatis和mysql的性能优化问题
关于mybatis和mysql的性能优化问题 1、尽量不使用多表查询,使用resultMap和延迟加载进行单表查询提高性能 ​ a、延迟加载和懒加载配置,在mybatis的setting标签中 &amp;amp;lt;!-- 开启延迟加载 --&amp;amp;gt; &amp;amp;lt;setting name=&amp;quot;lazyLoadingEnabled&amp;quot; value=&amp;quot;true&amp;quot;/&am
救急 mysql 语句优化问题
UPDATE time_def SET MINUTE=1 WHERE id=(SELECT MIN(id) FROM (SELECT id FROM time_def WHERE MONTH=1) AS t)rn能不能优化rn这样的语句频繁操作rn效率不高rn大侠大虾rn帮帮忙了
Mysql sql语句优化问题
sql语句:rnSELECTrn o.order_id,rn SUM(o.discountAmount) AS discountAmount,rn s.store_name,rn o.create_time AS create_time,rn o.cashPay AS cashAmount,rn o.cardPay AS cardAmount,rn m. NAME AS realname,rn o.sn,rn SUM(o.order_amount) AS order_amount,rn o.aliPay AS aliPay,rn o.wechatPay AS wechatPay,rn o.payeasePay AS payeasePayrnFROMrn es_daycount_order ornLEFT JOIN es_daycount_order_items i ON i.order_id = o.order_idrnLEFT JOIN es_goods AS g ON i.goods_id = g.goods_idrnLEFT JOIN es_member AS m ON o.operator_id = m.member_idrnLEFT JOIN es_store AS s ON m.store_id = s.store_idrnWHERErn o.store_id IS NOT NULLrnAND o.store_id IN (190, 192)rnAND o.create_time > 1483200000rnAND o.create_time < 1513958399rnAND (rn o.pay_status = 2rn OR o.pay_status = 3rn)rnAND o.sn NOT LIKE '%SO10%'rnAND o.sn NOT LIKE '%SO20%'rnGROUP BYrn i.order_idrnORDER BYrn create_time DESC;rnrnexplain结果rn[img=https://img-bbs.csdn.net/upload/201712/26/1514252659_673269.png][/img]rnrn现在查询时间是8秒左右。请问怎么优化
mysql 语句优化问题
[code=SQL]CREATE rn TABLE date rn ( rn year varchar(4) NOT NULL, rn month varchar(2) NOT NULL, rn day varchar(2) NOT NULL,rn info varchar(20),rn INDEX date1 USING BTREE (year, month, day)rnrn ) rn ENGINE= InnoDB DEFAULT CHARSET= utf8;rnrninsert into date values('2009','01','01','xxx');rninsert into date values('2009','02','01','xxx');rninsert into date values('2009','03','01','xxx');rninsert into date values('2009','04','01','xxx');rninsert into date values('2009','05','01','xxx');rninsert into date values('2009','06','01','xxx');rninsert into date values('2009','07','01','xxx');rninsert into date values('2009','08','01','xxx');rn=============================================================rnrnroot:aaa>show index from date\Grn*************************** 1. row ***************************rn Table: datern Non_unique: 1rn Key_name: date1rnSeq_in_index: 1rn Column_name: yearrn Collation: Arn Cardinality: 8rn Sub_part: NULLrn Packed: NULLrn Null:rn Index_type: BTREErn Comment:rn*************************** 2. row ***************************rn Table: datern Non_unique: 1rn Key_name: date1rnSeq_in_index: 2rn Column_name: monthrn Collation: Arn Cardinality: 8rn Sub_part: NULLrn Packed: NULLrn Null:rn Index_type: BTREErn Comment:rn*************************** 3. row ***************************rn Table: datern Non_unique: 1rn Key_name: date1rnSeq_in_index: 3rn Column_name: dayrn Collation: Arn Cardinality: 8rn Sub_part: NULLrn Packed: NULLrn Null:rn Index_type: BTREErn Comment:rn3 rows in set (0.00 sec)[/code]rnrn================================================================================rnrn[color=#FF0000]现在我想查2009-02-01 到2009-06-01 里面的info信息.[/color]rn rnrn[code=SQL]explain select year,month,day,info from date where rnconcat(year,concat('-',concat(month,concat('-',day)))) >='2009-02-01' and concat(year,concat('-',concat(month,concat('-',day))))<='2009-06-01';rnrn+----+-------------+-------+------+---------------+------+---------+------+------+-------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+-------------+-------+------+---------------+------+---------+------+------+-------------+rn| 1 | SIMPLE | date | ALL | NULL | NULL | NULL | NULL | 8 | Using where |rn+----+-------------+-------+------+---------------+------+---------+------+------+-------------+[/code]rnrn各位大哥注意看了, type= ALL 如果这里的数据有几千万行,将很影响性能.rnrn所以我想问, 在不改变表结构的情况下 ,按此条件查询,怎么样才能用到这个联合索引.rnrn(注 :个人感觉 type=index 和 type=all 区别不大,扫描的行数都一样,所以最好改成eq_ref 最好了)rnrnrn rn -----忘各位大哥不吝赐教.rnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrnrn
MYSQL,语句优化问题查询
表存在对no字段的索引rn当执行rnexplain select * from tName where no='ZKL'时,结果为rnrnid select_type table type posssible_keys key key_len ref rows Extrarnrn1 SIMPLE tName const tname001 tname001 10 1rnrn执行rnexplain select count(*) from tName where no='ZKL',结果为rnid select_type table type posssible_keys key key_len ref rows Extrarnrn1 SIMPLE tName const tname001 tname001 10 1 Using indexrnrn两个疑问rn1、为何第一句执行时,extra反而没任何提示?rn2、用coun(*)不是会全表扫描么,怎么反而有提示using index?
mysql语句优化问题
三表查询rnrnSELECT a.Id AS aId,a.Sn,a.Click,a.ShowMode,a.Name,a.MarketPrice,a.VipPrice,a.ActualNum,c.ChinaName AS cChinaName,d.Pic80,d.PicBig FROM PRODUCT AS a LEFT JOIN Cate AS c ON a.SubCateId=c.Id LEFT JOIN ProductPic AS d ON d.DefaultPic=1 AND a.Id=d.ProId ORDER BY a.Id DESC;rnrnPRODUCT 里的id和ProductPic里的proId对应,一个proId又分DefaultPic=1(产品主图)0(副图)rnrnPRODUCT 里的subcateid对应CATE里的Id(产品类别表);rnrnPRODUCT 里现有3312个产品,rnrn而 SELECT ProId FROM ProductPic WHERE DefaultPic=1 GROUP BY ProId 的结果也是3312rnrnrn我想问能不能优化最上面的SQL,避免用外联,查询速度好慢,rnrnrn而我优化后的SQL语句rnrnSELECT a.Id AS aId,a.Sn,a.Click,a.ShowMode,a.Name,a.MarketPrice,a.VipPrice,a.ActualNum,c.ChinaName AS cChinaName,d.Pic80,d.PicBig FROM PRODUCT AS a,CATE AS c,PRODUCTPIC AS d WHERE a.Id=d.ProId AND a.SubCateId=c.Id GROUP BY d.ProId ORDER BY a.Id DESC; rnrnrn结果却是3264;rnrnrn求高手帮帮我,在线等rnrn
MySQL Update语句的优化问题
比如,我有一个表User,字段有UserId(为自增长),UserName,Remark。rn在存储过程中,更新某一条记录时,语句为rnUPDATE `user` SET UserName = 'test', Remark = 'TestRemark' where UserId = 1rn存储过程传入两个参数PUserName,PRemark。rnrn问题是:rn 有几种情况,rn 1 是两个参数都传了值;rn 2 是只传了PUserName的值;rn 3 是只传了PReMark的值。rnrn我希望达到以下效果:如果哪个参数传的值为空,则不写Set后面的对应语句。rn哪位高手赐教?
mysql语句执行效率的优化问题
我现在有一个百万行的数据库,里面有相应规模的数据表,但是可能每次查询更新的行数不会超过20000行,因为用到了联表查询,特别的慢,有什么办法可以优化一下吗?rn我虽然在where语句里加了筛选条件,但是仿佛联表的时候还是把全部的联上了
性能优化问题
[img=http://img.my.csdn.net/uploads/201304/24/1366767949_1072.jpg][/img]rn[img=http://img.my.csdn.net/uploads/201304/24/1366767957_5527.jpg][/img]rnrnrn查询代码被以前的人写死了,表结构也没法改了。有没有什么办法能优化下。
Oracle、MySQL的分页语句和使用ThreadLocal的性能优化问题
一、MySQL和Oracle中分页的sql语句MySQL中:(主要利用limit关键字) select * from table_name limit start,size; Oracle:(主要利用了子查询) select emp_xx.* from (select rownum id,emp.* from emp where rownum < end) emp_xx where
[MySql]语句优化问题,求优化
代码rn[code=SQL]rnselect i.fk_in_no,i.fk_vender_abbrev,i.fk_factory_abbrev,i.fk_part_no,i.fk_spec,i.fk_commodity,i.qty,rn i.qty- rn ifnull((select sum(o.qty) rn from ve_report_outbound_detail o rn where i.fk_in_no=o.fk_in_no rn and i.fk_part_no=o.fk_vender_part_no rn and i.fk_spec=o.fk_vender_specrn and i.fk_commodity=o.fk_vender_commodityrn and i.fk_qty_unit_abbrev=o.fk_qty_unit_abbrev),0) as stock_qty,i.fk_qty_unit_abbrev,i.inbound_timernfrom ve_report_inbound_detail irnhaving stock_qty>0 rn[/code]rnrn视图:ve_report_inbound_detail 和 ve_report_outbound_detail 都只有不到一万的数据rn怎么这条语句要执行40多秒rnrn求优化 谢谢大大
mysql千万级数据量下的分页查询性能优化问题
刚刚到一家新公司,让我优化一下数据库查询性能。rn 一个资源管理平台,里面的所有资源都在这张表,数据量大概700多万。rn 字段也相对较多,索引大概5.6个,ID是自增城类型rn 页面的查询条件也有6个,包括下拉框和模糊查询rn 分页查询的时候按照每页显示10条的话会有近70万的分页rn rnrn问题:rn执行count统计总记录数时和分页查询时因为有固定的where条件使用到了!=符号,导致不执行索引查询需要一分钟,如果有查询条件的话最多会5分钟,不过是业务逻辑好像也没什么好办法。rn去掉排序后性能得到一定的提升,但是不再按时间进行排序了而是按ID,再者就是越是页码数越大的页面,查询速度越慢。rn至于什么count(id)还是count(*)这种问题上不能根本性解决问题,最关键还是因为!=符号查询需要50多秒,而使用=符号查询在10秒内,各位大神求指导有什么好的办法进行优化。rn
SQL语句性能优化问题,在线等!!!
下面2段SQL语句都封装成了视图,代码如下:rn[code=SQL]rn--视图名称为:_en_wk_vAppAndLogrnSELECT a.wfappid, a.wfappname, l.processid, l.duedt, l.alarmdt, l.path, l.todoid, l.elapsedwksec, p.tp, rn p.name, p.wkid, l.createdate, l.actiondate, l.actionby, rn l.actionbyname, f.endby, t.wftypename, t.wftypeidrnFROM dbo._en_wk_log AS l INNER JOINrn dbo._en_wk_flow AS f ON l.flowid = f.id LEFT OUTER JOINrn dbo._en_wk_process AS p ON f.wkid = p.wkid AND p.id = l.processid LEFT OUTER JOINrn dbo._en_wk_master AS msc ON msc.id = f.wkid LEFT OUTER JOINrn dbo._en_wk_diagram AS d ON d.diagid = msc.diagid LEFT OUTER JOINrn dbo._en_wk_application AS a ON a.diagid = d.diagid INNER JOINrn dbo._en_wk_applicationtype AS t ON a.wftypeid = t.wftypeidrnWHERE (f.wfappid IS NULL OR f.wfappid = ' ') AND (a.wfappname <> '选择审计流程类型') AND (a.wfappname <> '项目总览表')rn[/code]rn[color=#FF0000]下面的视图效率极慢,导致页面无法正常展示,SQL语句如下:[/color]rn[code=SQL]rn--视图名称为:_en_wk_vAppModelStatrnSELECT a.wfappid, a.wfappname, a.summin, s.startprocess, e.endprocess, t.totalprocess, rn t.wftypename, t.wftypeid, CAST(a.summin AS float) / t.totalprocess AS avgmin,rn p.sumelapse, ps.sumelapseint, CAST(em.emsummin AS float) / e.endprocess AS emavgminrnFROM (SELECT wfappid, wfappname, SUM(CAST(elapsedwksec / 60 AS int)) AS summin FROM dbo._en_wk_vAppAndLogrn GROUP BY wfappid, wfappname) AS a INNER JOINrn (SELECT wfappid, wfappname, COUNT(*) AS startprocess FROM dbo._en_wk_vAppAndLog WHERE (tp = 'start')rn GROUP BY wfappid, wfappname) AS s ON a.wfappid = s.wfappid LEFT OUTER JOINrn (SELECT wfappid, wfappname, COUNT(*) AS endprocess FROM dbo._en_wk_vAppAndLog WHERE (tp = 'end')rn GROUP BY wfappid, wfappname) AS e ON a.wfappid = e.wfappid LEFT OUTER JOINrn (SELECT wfappid, wfappname, SUM(CAST(elapsedwksec / 60 AS int)) AS emsummin FROM dbo._en_wk_vAppAndLog WHERE (NOT (endby IS NULL))rn GROUP BY wfappid, wfappname) AS em ON a.wfappid = em.wfappid INNER JOINrn (SELECT wfappid, wfappname, wftypename, wftypeid, COUNT(*) AS totalprocess FROM dbo._en_wk_vAppAndLogrn GROUP BY wfappid, wfappname, wftypename, wftypeid) AS t ON a.wfappid = t.wfappid LEFT OUTER JOINrn (SELECT wfappid, wfappname, COUNT(*) AS sumelapse FROM dbo._en_wk_vAppAndLog WHERE (actiondate > duedt)rn GROUP BY wfappid, wfappname) AS p ON a.wfappid = p.wfappid LEFT OUTER JOINrn (SELECT wfappid, wfappname, COUNT(*) AS sumelapseint rn FROM (SELECT wfappid, wfappname, processid FROM dbo._en_wk_vAppAndLogrn WHERE (actiondate > duedt)rn GROUP BY wfappid, wfappname, processid) AS pern GROUP BY wfappid, wfappname) AS ps ON a.wfappid = ps.wfappidrn[/code]rn执行该视图语句Select * From "_en_wk_vAppModelStat" p order by p.wfappname的耗时为20秒左右。。。rn请教各位牛人如下优化,小弟感激不尽,在线等!!!rn
面试常问MySQL性能优化问题
面试常问MySQL性能优化问题 知识综述: [1] MySQL中锁的种类: 常见的表锁和行锁,也有Metadata Lock等等,表锁是对一整张表加锁,分为读锁和写锁,因为是锁住整张表,所以会导致并发能力下降,一般是做ddl处理时使用。 行锁则是锁住数据行,这种加锁方法比较复杂,但是由于只锁住有限的数据,对于其它数据不加限制,所以并发能力强,MySQL一...
mysql语句性能剖析
1.语句性能剖析 set profiling=1; select * from Pm25ControlLog where deviceId='C89346459837' and retCode='00000' order by submitTime desc limit 1; +----------+--------------+------+------+----------
MySQL 性能跟踪语句
MYSQL5.0家族提供的性能跟踪器确实很爽。要注意两点。1、不过版本要在5.0.37之后手册上介绍:(SHOW PROFILES and SHOW PROFILE were added in MySQL 5.0.37. )ImportantPlease note that the SHOW PROFILE and SHOW PROFILES functionality is part of th...
mysql常用性能语句
show table status; show status like "Handler_read%";--查询萦引使用情况 show variables like 'long%';--查询慢语句设置 set long_query_time=2;--设置慢语句时间 show variables like '%datadir%' alter table tbdpoffset type=MyI...
api接口性能优化问题
背景:公司Saas产品列表页接口响应时间长,列表页速度体验差,亟待优化。  一、接口性能诊断工具Arthas 1.下载及安装详见以下链接:https://alibaba.github.io/arthas/manual-install.html 2.按1所述步骤,启动后弹出页面,点击connect即可,如下图 3.输入命令:trace -j 类的完整路径名 方法名   ,如下图 ...
ArrayList性能优化问题?
[color=#FF0000]在ArrayList集合中添加一万个对象,甚至更多,请问怎样做,效率才最高!各位大虾们帮下忙啊[/color]
oracle性能优化问题
下面的sql语句性能很低,查询效率很慢,请大侠帮我优化下,谢谢,也可以帮我分析下sql的功能:rnselect t.org_id, t.org_name, w.parent_org_id, w.denorm_level from dfnd_org_msg rn t,dfnd_org_info w, (select org_id from dfnd_org_info where parent_org_id ='50000000' ) x rn where x.org_id = t.org_id(+) and x.org_id = w.org_id(+) rn and ((t.org_id<>'50000000' and w.denorm_level='1' ) or (t.org_id='50000000' and w.denorm_level=0)) rn
SQL 查询性能优化问题
TABLE_A(aID,bID,cID,a,b,c,d)rnTABLE_B(aID,bID,cID,e,f,g,h)rnrn两表中,aID,bID,cID 为关联字段rn以下两种查询中,哪种是最优的rnrn1.rnselect aID,bID,cID,a,b,c,d,e,f,g,hrnfrom TABLE_A A INNER JOIN TABLE_B B rn on [b]A.aID=B.aID[/b] and A.bID=B.bID and A.cID=B.cIDrnwhere [b]aID='abc123456789'[/b] and a='1' and b='abc'rnrnrn2.rnselect aID,bID,cID,a,b,c,d,e,f,g,hrnfrom TABLE_A A INNER JOIN TABLE_B B rn on [b]B.aID='abc123456789'[/b] and A.bID=B.bID and A.cID=B.cIDrnwhere [b]aID='abc123456789'[/b] and a='1' and b='abc'rnrnrn个人观点是认为1,因为两个表关联,主要是以字段进行,某一个字段的值是多少,是在where中解决。rn并且2破坏了查询的规范性。rnrn请有更好的见解,请指出。rn
update性能优化问题
问题描述:rn 做一个投票系统,由于参与投票的用户量很大,所以,并发update数据库的可能性很大,rn 而且并发数量有可能也很大.rnrn 请教:rn 怎样来处理多用户多并发update库的问题?rn 以及有没有能通过其他形式避免并发update的方法.rnrn 数据库:MSSQL2005
PHP性能优化问题简析
PHP性能问题解决的方向 1、PHP语言级的性能优化 2、PHP周边问题的性能优化 3、PHP语言自身的分析优化(c语言)
oracle性能优化问题??
oracle中有一些性能标记如rn /*+ORDERED*/rn /*+ALLROW*/rn等在那里有介绍rn在PL/SQL DEVELOP中怎样自动加入?
IS NULL 的性能优化问题
select distinct A.id from A left outer join B on B.A_id = A.idrn where B.A_id is nullrnrn如题,以上sql在大数据量的时候(A表7万多条,B表4万多条,inner join匹配条数为3万余条)在DB2中执行的非常缓慢,平均时间会在上1000S以上...rn网上查了一下,似乎原因在于DB2的查询优化器在null值的行数很大时会自动选择全表扫描而不是索引扫描?rn如此一来如何优化?rnrnPS:问题说白了就是在于取A与B差集的方法中性能最强的是哪种,当前我做过一下改动:rn select distinct A.id from A left outer join B on B.A_id = A.id rn where A.id not in (select A.id from org inner join B on B.A_id = A.id)rn即用NOT IN 代替 IS NULL...rn 是否会有更优化的方案? 在线等大神解答
关于SQL性能优化问题
现在有下面一段SQL,各位DX有什么好的优化方法,谢谢,rnrnSELECT KOKYAKU_NO,TAKEI_KOJIN_ID FROM T_KOKYAKU_NAYOSE WHERE TAKEI_KOJIN_ID IN(SELECT TAKEI_KOJIN_ID FROM T_KOKYAKU_NAYOSE WHERE KIGOU IS NULL AND TAKEI_KOJIN_ID IS NOT NULL AND KOJIN_CD ='810105' GROUP BY TAKEI_KOJIN_ID HAVING COUNT(*)>1) AND KIGOU IS NULL AND KOJIN_CD ='810105' ORDER BY UPDATE_DAY DESC,KOKYAKU_NO DESCrnrn已建立了TAKEI_KOJIN_ID ,KIGOU,KOJIN_CD 索引,不可以设置主键,谢谢各为了,
关于反射的性能优化问题
在项目开发过程中有用反射获的程序集类型来创建该类型的新实例,但是通过性能测试后发现用这种方法来实现的功能模块耗时很严重,不用反射来做的话实现起来比较麻烦,请各位高手们指点下,有什么方法可以对反射进行性能优化~~
jquery 性能优化问题
[code=HTML]rn rn rn rn rn 能帮帮解下密吗?asp源码中加密代码rn 【求助】jquery不同页面调用传值的方法rn 每生成一个.JSP文件就将其放在工程下的某个文件夹下,怎么办rn JS在多个显示器中指定的显示器中!rn 有没有人使用《Web开发敏捷之道》这本书的测试出了问题啊rn IIS6.0配置asp打开速度慢,关闭数据库所在文件夹写权限后速度变快,请问什么原因?rn 怎样让iframe随下滑菜单自适应改变高度rn div块始终在顶部且不被覆盖rn 请教一个可以控制多Sheet页个数的JS脚本写法rn rn rnrn[/code]rnrnrn[code=CSS]rnbody font-size:12px; background:#fff; font-family:"宋体","Arial Narrow"rnbody, ul, li, h1, h2, h3, h4, h5, h6, p, th, td, dl, dt, dd margin:0; padding:0rnul, li list-style-type:nonernrn.main width:500px; margin:autorn.sec width:150px; line-height:20px; margin:100px 0 20pxrn.list li line-height:28pxrn[/code]rnrn[code=JScript]rn$(function () rn SecEve()rn)rnrn/*实时搜索*/rnfunction SecEve()rn rn //缓存变量rn var $list_li = $("#list li")rn //计算数量rn var num = $list_li.lengthrn //添加属性rn $list_li.each( function()rn //获取li标签的文本内容rn var li_html = $(this).html()rn //添加属性name并把文本内容写进去rn $(this).attr("name",li_html)rn )rn //键盘按下时触发rn $(window).keyup( function()rn //把li先全部隐藏rn $list_li.hide()rn //筛选rn for( var i=0; i能帮帮解下密吗?asp源码中加密代码)进行对比rn我这里是先把li的文本内容先写到li的name里( 能帮帮解下密吗?asp源码中加密代码)再用name来筛选rnrn问题2rn如果把li复制到600行左右,文本输入框就开始出现卡的现象,把li复制到1000行,文本输入框就直接挂掉用不了啦。rn有没有什么方法保证li复制到2000行都不卡的。谢谢啦(这个是在页面操作不走数据库)
Mssql 性能优化问题
查询的时候结果一直出不来哦,能帮我找下原因么?rn谢谢 了rn[code=sql]SELECT P.NAME,WH.WORKORDER,(CASE substring(T.NAME,1,1) WHEN 'L' THEN 'LPE' WHEN 'A' THEN 'ASM' ELSE P.LINE END) as Linern ,P.WAFERSIZE,WH.LOTID,WH.RUNNOrn ,COUNT(DISTINCT WH.WAFERID) AS MoveInQtyrn ,SUM(CASE WHEN LEN(WH.DEFECTCODE)=0 THEN 0 ELSE 1 END) AS ScrapQtyrn ,ROUND((COUNT(DISTINCT WH.WAFERID) * ((CAST(P.WAFERSIZE AS FLOAT) * CAST(P.WAFERSIZE AS FLOAT)) / 36)),2) AS TranslateQty rn ,S.NAME,T.NAME,WH.OPERATORIDrn ,WH.MOVEINTIME,WH.MOVEOUTTIMErn rnFROM WAFERHISTORY WH,Shopfloornode S,TOOL T,WORKORDER WO,PRODUCT PrnWHERE WH.STEPID=S.SHOPFLOORNODEID AND WH.TOOLID=T.IDrn AND WH.WORKORDER=WO.WorkOrderIDrn --AND WO.WorkOrderType IN (3,7,11)rn AND WO.ProductName=P.NAMErn AND T.TOOLCLASS='M'rn AND S.NAME = '6320'rn AND WH.MOVEOUTTIME > '2013-10-07 00:00:00'rn AND WH.MOVEOUTTIME < '2013-10-10 00:00:00'rn GROUP BY S.NAME,WH.WORKORDER,WH.LOTID,T.NAME,P.WAFERSIZE, P.NAME,WH.RUNNO,p.Line,WH.OPERATORID,WH.MOVEINTIME,WH.MOVEOUTTIME;rn[/code]rnrn以下是计划花费的图形rn[img=https://img-bbs.csdn.net/upload/201311/07/1383804924_629976.jpg][/img]rnrn
mapxtreme c# 性能优化问题?
现在我使用的是将地图一次加载到能存中如下:rnti.CacheSettings.CacheType = CacheOption.All;rn这个也要10几秒的等待而且每次放大,放小都要等2~~3秒。rn大家说说各自的看法和观点rn?
打开视图性能优化问题。
(C/S)通过表单的Dialog list域打开一个视图(use view dialog for choices).rn 视图中有1300条文档,打开要3秒左右。rnrn 视图有三列,列值都时取的表单域值没有用任何公式。只是做了分类。rnrn 客户不满意速度,我也不知道还有什么方法优化了,求路过的大神给点指点。
springboot性能优化问题
@SpringbootApplicatioon缺点 答:它等同于@Configuration+@EnableAutoConfiguration+@ComponentScan,它扫包的核心是扫描同级包,会将下图 里面包含的controller,entity,mapper,service等进行全部扫描,采用递归遍历包下的子类,这样会影响项目启动的时间; 会加载一些不需要的多余的实例(beans)...
数据库建库性能优化问题
看好多书上说将数据库建在两个物理硬盘上会将性能提高,但我建立后发现它还是往一个硬盘中狂写,另一个却不变,是不是要有什么设置或建库时有什么规则,请大家指点一二
oracle 性能优化问题
小机配置是4cpu 2g内存, 可是数据库运行的确很慢。cpu只有一个有占用率。其他3个基本上都是0rn感觉上是在用单cpu处理一样。rnrn那位能介绍一下在4cpu 2g 内存时 ,os是hp-unix下怎样优化oracle 的参数,才能使硬件充分发挥作用 rn我查了一下参数 db_writer_processes integer 1 还需要什么参数,我可以立刻查rn
Android之性能优化问题
1、UI优化 在xml布局文件中,合理选择RelativeLayout、LinearLayout、FrameLayout,其中RelativeLayout会让子View调用两次onMeasure()方法,并且布局复杂时,onMeasure也相对复杂,效率比较低;在LinearLayout中,当weight&amp;gt;0时,也会让子View调用两次onMeasure 布局复杂时,尽量使用&amp;lt;in...
Storm+Redis性能优化问题
结合自己的开发及调试经历,总结一下经验教训。 提升 Storm Topology的性能,不能只关注提高进程(worker)及线程(executor: spout/bolt)并发度, 也要注意是否有外部瓶颈;      我的问题就在于Topology最后一级Bolt是要把分析结果写入Redis, 由于tuple吞吐量为每分钟数百万级,给Redis服务器带来很大压力。     我的优化思路如下:
ListView性能优化问题总结
我们经常会遇到 ListView滑动的时候出现卡顿现象,这样我们该如何解决呢?我们可以从以下几个方面进行优化: 1.重用convertView,每次滑动list,view回收,当需要显示新的item时候,可以重用回收器的view。 2.避免在getView中重复调用findViewById,使用静态ViewHolder,然后保存在View的 tag中。 3.利用好View Type,
相关热词 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池 c#5.0 安装程序 c# 分页算法