mysql中10万条记录查询慢的解决办法? 5
我一个表中有接近10万条记录,查询非常慢。请高手看看我的SQL怎么写能提高查询效率。我用的是mysql+ibatis,以下为代码:<selectid="wareListS...
我一个表中有接近10万条记录,查询非常慢。请高手看看我的SQL怎么写能提高查询效率。我用的是mysql+ibatis,以下为代码:
<select id="wareListSelect" parameterClass="com.goldf.ware.ibatis.bean.WareListSelect" resultMap="wareIndexResult">
select ware_id, ware_name, ware_type, ware_custom1, ware_custom2, ware_no, ware_price,ware_number,ware_remark, ware_author, ware_datetime from ware_detail
where ware_type=#wareType.id#
<dynamic>
<isNotEmpty prepend="and" property="baseType1">
<![CDATA[ ware_custom1 = #baseType1.id# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="baseType2">
<![CDATA[ ware_custom2 = #baseType2.id# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="author">
<![CDATA[ ware_author = #author# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="keyWords">
<![CDATA[ ware_name like CONCAT('%', #keyWords#, '%') ]]>
</isNotEmpty>
<isNotEmpty property="orderBy">
<![CDATA[ order by $orderBy$ ]]>
</isNotEmpty>
<isNotEmpty property="descOrAsc">
<![CDATA[ $descOrAsc$ ]]>
</isNotEmpty>
</dynamic>
limit #begin#, #pageRows#
</select>
用索引效率会不会高点,如何建索引? 展开
<select id="wareListSelect" parameterClass="com.goldf.ware.ibatis.bean.WareListSelect" resultMap="wareIndexResult">
select ware_id, ware_name, ware_type, ware_custom1, ware_custom2, ware_no, ware_price,ware_number,ware_remark, ware_author, ware_datetime from ware_detail
where ware_type=#wareType.id#
<dynamic>
<isNotEmpty prepend="and" property="baseType1">
<![CDATA[ ware_custom1 = #baseType1.id# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="baseType2">
<![CDATA[ ware_custom2 = #baseType2.id# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="author">
<![CDATA[ ware_author = #author# ]]>
</isNotEmpty>
<isNotEmpty prepend="and" property="keyWords">
<![CDATA[ ware_name like CONCAT('%', #keyWords#, '%') ]]>
</isNotEmpty>
<isNotEmpty property="orderBy">
<![CDATA[ order by $orderBy$ ]]>
</isNotEmpty>
<isNotEmpty property="descOrAsc">
<![CDATA[ $descOrAsc$ ]]>
</isNotEmpty>
</dynamic>
limit #begin#, #pageRows#
</select>
用索引效率会不会高点,如何建索引? 展开
2个回答
展开全部
十万条数据已经够多了,通常最好的办法就是创建索引,创建索引的命令: CREATE INDEX index_name ON table_name(index_col_name,...);
index_name:这是索引的创建名称,你自己命一个名称。
table_name:这是数据表名称,你的应该是ware_detail。
index_col_name:为哪一列数据创建索引,这个项目很重要,你的可以写ware_type,请确保这行是不是数字类型,因为数据类型比字符类型查询速度更快,最好将这一行设置一个固定长度,这样查询速度更快,如果这个行数据长度能短一点更好,越短就意味着查询速度越快。
index_name:这是索引的创建名称,你自己命一个名称。
table_name:这是数据表名称,你的应该是ware_detail。
index_col_name:为哪一列数据创建索引,这个项目很重要,你的可以写ware_type,请确保这行是不是数字类型,因为数据类型比字符类型查询速度更快,最好将这一行设置一个固定长度,这样查询速度更快,如果这个行数据长度能短一点更好,越短就意味着查询速度越快。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询