涉及到数据库拆分,需要将相关表的JOIN SQL剥离。

剥离过程中,发现了这么个SQL XML。整个SQL 974 行,分为6个函数。读起来费劲无比。 

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="VisitStatisticsDao">
<resultMap id="visitStatisticsResult" type="com.qunar.hotel.crm.dto.VisitStatisticsResult"/> <sql id="timeRange">
<![CDATA[
visit.visit_date >= #{dateFrom} ]]>
and
<![CDATA[ visit.visit_date <= #{dateTo} ]]>
</sql> <sql id="validState">
and
visit.valid = 1
</sql> <sql id="conditionOfSort">
<choose>
<when test="orderBy == 'byDoorVisited'">
and visit.visit_type = 2
</when>
<when test="orderBy == 'KPVisited'">
and visit.is_active = 0
</when>
<when test="orderBy == 'byDoorKPVisited'">
and visit.is_active = 0 and visit.visit_type =2
</when>
<when test="orderBy == 'revisited'">
and visit.revisit_valid = 1
</when>
</choose>
</sql> <sql id="statisticAttribute">
total_count.visit_count as totalVisited,
by_door_count.visit_count as byDoorVisited,
kp_count.visit_count as KPVisited,
by_door_kp_count.visit_count as byDoorKPVisited,
by_valid_revisit_count.visit_count as revisited
</sql> <sql id="order">
<choose>
<when test="orderBy == 'totalVisited'">
totalVisited
</when>
<when test="orderBy == 'byDoorVisited'">
byDoorVisited
</when>
<when test="orderBy == 'KPVisited'">
KPVisited
</when>
<when test="orderBy == 'byDoorKPVisited'">
byDoorKPVisited
</when>
<when test="orderBy == 'revisited'">
revisited
</when>
<otherwise>
totalVisited
</otherwise>
</choose>
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
</sql> <sql id="parent">
(select
`id`,
`name`,
`tree_code`,
`org_type`
from qadmin_org org
where org_type = #{dimension}
and org.tree_code like concat((select tree_code from qadmin_org where id = #{groupId}), '%')
)
parent
</sql> <sql id="orgVisitRecord">
qadmin_org org
left join
qadmin_user user
on org.id = user.org_id
inner join
crm_visit_record visit
on user.user_id = visit.user_id
where
<include refid="timeRange"/>
<include refid="validState"/>
</sql> <sql id="bdTotalCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
)
visit
on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdByDoorCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
visit_type = 2
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdKPCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
is_active = 0
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="bdKPByDoorCount">
(select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from
crm_visit_record visit
where
<include refid="timeRange"/>
and
is_active = 0
and
visit_type = 2
<include refid="validState"/>
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="RevisitValidCount">
(
select
count(visit.id) visit_count,
user.user_id user_id,
user.realname real_name
from
qadmin_org org
inner join
qadmin_user user on user.org_id = org.id
left join
(select id, user_id from crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
and
revisit_valid = 1
)
visit on visit.user_id = user.user_id
where
org.tree_code like concat((select tree_code from qadmin_org where id=#{groupId}), '%')
group by
user.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupTotal">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByDoor">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.visit_type = 2
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByKPVisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.is_active = 0
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByKPDoorVisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.is_active = 0
and
visit.visit_type = 2
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <sql id="queryBDVisitedCountInMultiGroupByValidRevisit">
(
select
org.id as 'id',
org.user_id as 'user_id',
org.sub_realname as 'name',
visit.visit_count as 'visit_count'
from
(
select
sub.id as 'id',
sub.user_id as 'user_id',
sub.realname as 'sub_realname'
from
(select id, name, tree_code from qadmin_org)
parent
left join
(
select
org.name,
org.tree_code,
user.id as 'id',
user.user_id as 'user_id',
user.realname
from
qadmin_org
org
inner join
qadmin_user
user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
org
left join
(
select
count(visit.id) as 'visit_count',
user.user_id as 'user_id'
from
crm_visit_record visit
left join
qadmin_user user
on
visit.user_id = user.user_id
where
<include refid="timeRange"/>
and
visit.revisit_valid = 1
<include refid="validState"/>
group by
user.user_id
)
visit
on org.user_id = visit.user_id
)
</sql> <select id="querySortedBDVisitStatistics" parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition" resultType="string">
select user_id from
(
select
visit.user_id as 'user_id',
visit.visit_count as 'visit_count'
from
(
select
sub.user_id as 'user_id'
from
(select id, tree_code from qadmin_org)
parent
left join
(
select
org.tree_code as 'tree_code',
user.user_id as 'user_id'
from
qadmin_org
org
inner join
qadmin_user user
on user.org_id = org.id
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
)
user
left join
(
select
count(visit.id) as 'visit_count',
user_id
from crm_visit_record visit
where
<include refid="timeRange"/>
<include refid="validState"/>
<include refid="conditionOfSort"/>
group by user_id
)
visit
on user.user_id = visit.user_id
order by visit_count
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
)temp </select> <select id="queryBDVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.user_id as groupId,
total_count.real_name as name,
<include refid="statisticAttribute"/>
from <include refid="bdTotalCount"/>
total_count
left join
<include refid="bdByDoorCount"/>
by_door_count
on total_count.user_id = by_door_count.user_id
left join
<include refid="bdKPCount"/>
kp_count
on total_count.user_id = kp_count.user_id
left join
<include refid="bdKPByDoorCount"/>
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
<include refid="RevisitValidCount"/>
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id
order by
<include refid="order"/>
</select> <select id="queryOrgVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.parent_id as 'groupId',
total_count.parent_name as 'name',
<include refid="statisticAttribute"/>
from
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
total_count
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.visit_type = 2
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
by_door_count
on total_count.parent_id = by_door_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.is_active = 0
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
kp_count
on total_count.parent_id = kp_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.is_active = 0
and visit.visit_type = 2
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id)
kp_by_door_count
on total_count.parent_id = kp_by_door_count.parent_id
left join
(
select
parent.id as 'parent_id',
parent.name as 'parent_name',
count(sub.visit_id) as 'visit_count'
from
<include refid="parent"/>
left join
(
select
org.tree_code as 'tree_code',
visit.id as 'visit_id'
from
<include refid="orgVisitRecord"/>
and visit.revisit_valid = 1
)
sub
on sub.tree_code like concat(parent.tree_code, '%')
group by parent.id
)
by_valid_revisit_count
on total_count.parent_id = by_valid_revisit_count.parent_id
order by
<include refid="order"/>
</select> <select id="querySingleBDVisitedCount" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select
total_count.user_id as groupId,
total_count.name as name,
<include refid="statisticAttribute"/>
from
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
)
total_count
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.visit_type = 2
)
by_door_count
on total_count.user_id = by_door_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.is_active = 0
)
kp_count
on total_count.user_id = kp_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.is_active = 0
and
visit.visit_type = 2
)
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
(
select
count(visit.id) as visit_count,
user.user_id as user_id,
user.realname as name
from
qadmin_user user
left join
crm_visit_record visit
on user.user_id = visit.user_id
where
user.user_id = #{groupId}
and
<include refid="timeRange"/>
<include refid="validState"/>
and
visit.revisit_valid = 1 )
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id </select> <select id="queryBDVisitedCountInMultiGroup" resultMap="visitStatisticsResult"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
total_count.user_id as 'groupId',
total_count.name as 'name',
<include refid="statisticAttribute"/>
from
<include refid="queryBDVisitedCountInMultiGroupTotal"/>
total_count
left join
<include refid="queryBDVisitedCountInMultiGroupByDoor"/>
by_door_count
on
total_count.user_id = by_door_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByKPVisit"/>
kp_count
on total_count.user_id = kp_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByKPDoorVisit"/>
by_door_kp_count
on total_count.user_id = by_door_kp_count.user_id
left join
<include refid="queryBDVisitedCountInMultiGroupByValidRevisit"/>
by_valid_revisit_count
on total_count.user_id = by_valid_revisit_count.user_id
group by total_count.user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select count(distinct sub.user_id) from
(select id, tree_code from qadmin_org)
parent
left join
(select
org.tree_code as 'tree_code',
`user`.id as 'user_id'
from
qadmin_org org left join
qadmin_user `user`
on `user`.org_id = org.id)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id = #{groupId};
</select> <select id="queryOrgVisitedRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select count(sub.id) from
(select
name,
id,
org_type,
tree_code
from qadmin_org where id = #{groupId})
parent
left join
(select
name,
id,
org_type,
tree_code
from qadmin_org where org_type = #{dimension})
sub
on sub.tree_code like concat(parent.tree_code, '%');
</select> <select id="queryBDVisitedInMultiGroupRecordSize" resultType="int"
parameterType="com.qunar.hotel.crm.model.condition.VisitStatisticsCondition">
select
count(sub.id)
from
(select id, name, tree_code from qadmin_org)
parent
left join
(select
org.name,
org.tree_code,
user.id,
user.realname
from
qadmin_org org inner join
qadmin_user user
on user.org_id = org.id)
sub
on sub.tree_code like concat(parent.tree_code, '%')
where
parent.id in
<foreach collection="groupIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</select> </mapper>

花费了半天的分析后,重构代码,SQL压缩为96行

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qunar.scm.visit.dao.VisitStatisticsDao">
<resultMap id="visitStatisticsResult" type="com.qunar.scm.visit.model.vo.VisitStatisticsResult"/> <sql id="order">
<choose>
<when test="orderBy == 'totalVisited'">
totalVisited
</when>
<when test="orderBy == 'byDoorVisited'">
byDoorVisited
</when>
<when test="orderBy == 'KPVisited'">
KPVisited
</when>
<when test="orderBy == 'byDoorKPVisited'">
byDoorKPVisited
</when>
<when test="orderBy == 'revisited'">
revisited
</when>
<otherwise>
totalVisited
</otherwise>
</choose>
<choose>
<when test="orderType == 'asc'">
asc
</when>
<otherwise>
desc
</otherwise>
</choose>
</sql> <sql id="where">
<where>
visit.visit_date >= #{dateFrom} and #{dateTo} >= visit.visit_date
and visit.valid = 1
<if test="userId != null and userId != '' ">
and user_id = #{userId}
</if>
<if test="orgTreeCodes != null and orgTreeCodes.size >0 ">
AND
<foreach collection="orgTreeCodes" item="treeCode" open="(" close=")" separator="or">
org_tree_code like '${treeCode}%'
</foreach>
</if>
</where>
</sql> <sql id="column">
user_id as 'groupId',
count(1) as totalVisited,
sum(case when visit.visit_type =2 then 1 else 0 end) as byDoorVisited,
sum(case when visit.is_active = 0 then 1 else 0 end) as KPVisited,
sum(case when visit.is_active = 0 and visit.visit_type =2 then 1 else 0 end) as byDoorKPVisited,
sum(case when visit.revisit_valid = 1 then 1 else 0 end) as revisited,
sum(case when (visit.visit_purpose_type = '1' or visit.visit_purpose_type='1#2') then 1 else 0 end) as visitforSignCount,
sum(case when (visit.visit_purpose_type = '2' or visit.visit_purpose_type='1#2') then 1 else 0 end) as visitforMantainceCount
</sql> <select id="queryBDVisitedCountInMultiGroupWithRowHandler" resultMap="visitStatisticsResult"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition"
fetchSize="100" resultSetType="FORWARD_ONLY">
select
<include refid="column"/>
from crm_visit_record visit
<include refid="where"/>
group by user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedCountInMultiGroup" resultMap="visitStatisticsResult"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition">
select
<include refid="column"/>
from crm_visit_record visit
<include refid="where"/>
group by user_id
order by
<include refid="order"/>
</select> <select id="queryBDVisitedInMultiGroupRecordSize" resultType="int"
parameterType="com.qunar.scm.visit.model.condition.VisitStatisticsCondition">
select
count(distinct user_id)
from crm_visit_record visit
<include refid="where"/>
</select> </mapper>

简要分析:

整个SQL分类:

1 6个函数,count 3个,select list 3个,where条件分别为查单独一个人,查一个组织。6个函数完全可以压缩为2个函数。

2 原SQL原理
先生成多个统计指标的temp表,然后使用uid进行left join

select count(1) from A where W1
left join
select count(1) from A where W2
left join
select count(1) from A where W3
order by XXXXX

换一种思路 使用CASE WHEN代替即可

select
SUM(case when W1 then 1 else 0 end),
SUM(case when W2 then 1 else 0 end),
SUM(case when W3 then 1 else 0 end)
FROM A
ORDER BY XXXX

挫代码处处有,也许一开始是不挫的,随着一代代不加思考叠加,最终就成了没法维护的代码。所以,对于Coding,无论何时,保持一个谨慎的态度。

一段SQL代码的压缩:从974行到96行,十倍压缩的更多相关文章

  1. thinkphp5, 结合pgsql使用时, 要先运行这段sql代码

    按照tp5的官方文档的说法, 必须这么做: 先执行一段sql代码 CREATE OR REPLACE FUNCTION pgsql_type(a_type varchar) RETURNS varch ...

  2. 一段SQL代码

    begin transaction set quoted_identifier on set arithabort on set numeric_roundabort off set concat_n ...

  3. 探究SQL添加非聚集索引,性能提高几十倍之谜

    上周,技术支持反映:客户的一个查询操作需要耗时6.1min左右,在跟进代码后,简化了数据库的查询后仍然收效甚微.后来,技术总监分析了sql后,给其中的一个表添加的一个非聚集索引(三个字段)后,同样的查 ...

  4. 评《撸一段 SQL ? 还是撸一段代码? 》

    最近看到一篇博客<撸一段 SQL ? 还是撸一段代码?>,文章举例说明了一个连表查询使用程序code来写可读性可维护性更好,但是回帖意见不一致,我想作者在理论层面没有做出更好的论述,而我今 ...

  5. 撸一段 SQL ? 还是撸一段代码?

    记得刚入公司带我的研发哥们能写一手漂亮的 SQL,搜索准确.执行快.效率高. 配合Web项目中的查询展示数据的需求,基本是分分钟完成任务. 那段时间基本是仰视的态度,每天都去讨教一点手写 SQL 的要 ...

  6. 一段完整的创建表格的SQL代码

    一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...

  7. c#代码 天气接口 一分钟搞懂你的博客为什么没人看 看完python这段爬虫代码,java流泪了c#沉默了 图片二进制转换与存入数据库相关 C#7.0--引用返回值和引用局部变量 JS直接调用C#后台方法(ajax调用) Linq To Json SqlServer 递归查询

    天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找到合适天气预报接口一切都是小意思,说干就干,立马跟学生沟通价格. ​ ​不过谈报价的过程中,差点没让我一口老血喷键盘上,话说我们程序猿的人 ...

  8. 刷新SQL Server所有视图、函数、存储过程 更多 sql 此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 [SQL]代码 --视图、存储过程、函数名称 DECLARE @NAME NVARCHAR(255); --局部游标 DECLARE @CUR CURSOR --自动修改未上状态为旷课 SET @CUR=CURSOR SCROLL DYNAMIC FO

    刷新SQL Server所有视图.函数.存储过程 更多   sql   此脚本用于在删除或添加字段时刷新相关视图,并检查视图.函数.存储过程有效性. [SQL]代码 --视图.存储过程.函数名称 DE ...

  9. C# 一段绘图代码 在form_load事件不能显示图

    今天无意将一段绘图代码 写在form_load事件了,结果不能显示绘图.(代码:Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.R ...

随机推荐

  1. ASP.NET中的验证控件

    ASP.NET提供了如下的控件: RequiredFieldValidator: 字段必填 (ControlTovalidate设定要验证的控件) RangeValidator: 值在给定的最大值,最 ...

  2. 深度优化LNMP之PHP (转)

    深度优化LNMP之PHP   PHP缓存加速介绍   1.操作码介绍及缓存原理     当客户端请求一个php程序时,服务器的PHP引擎会解析该PHP程序,并将其编译为特定的操作码文件(Operate ...

  3. Centos学习手册——装逼宝典之强制重置密码

    ---恢复内容开始--- Centos学习手册by RuffianFish; 痞子鱼 近日闲的无聊,而最近又在搞Centos决定写个Centos详细的学习手册,以便自己在长时间没摸Centos的情况下 ...

  4. Jquery操作单选按钮(Radio)的取值赋值实现代码

    1.获取选中值,三种方法都可以: $('input:radio:checked').val(); $("input[type='radio']:checked").val(); $ ...

  5. 禁止选择文本和禁用右键 v1.0

    var zhonghao={ //绑定事件 myAddEvent: function(obj, sEvent, fn){if(obj.attachEvent){obj.attachEvent('on' ...

  6. PHPUnit初试

    先测试了一下加减,检查一下环境,又调用函数测试了服务器名. 源代码: class DemoController extends \Think\Controller { /** * @assert (5 ...

  7. smarty

    模板引擎是用于把模板文件和数据内容合并在一起的程序,便于网站开发有利于代码分离和维护,了解一个模板最好知道其工作原理,以便于实现一通万通. 模板文件一般是HTML xml js等类型文件,如果不用模板 ...

  8. App评分

    //应用实现评论跳转的两种方法: //第一种: //在iOS6.0前跳转到AppStore评分一般是直接跳转到AppStore评分 //NSString *evaluateString = [NSSt ...

  9. jquery经验1

    1.Javascript刷新页面的几种方法: location.reload()// 真刷新 location=location location.assign(location) document. ...

  10. 打开网页自动弹出qq客户端

    新建js后调用即可,打开网站自动弹出qq对话框,若qq为关闭状态则启动qq,之后弹出对话框. document.write("<iframe src='tencent://messag ...