mysql-如何获得良好的解释和缓慢的查询?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql-如何获得良好的解释和缓慢的查询?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1762字,纯文字阅读大概需要3分钟。
内容图文
![mysql-如何获得良好的解释和缓慢的查询?](/upload/InfoBanner/zyjiaocheng/884/20b093d547604fc6a0a58aa48f186153.jpg)
像下面这样在EXPLAIN中有一个好的计划,而查询却很慢.只有几行使用索引,没有文件排序.
查询运行时间为9s.主表大约有50万行.
当我在该表中有25万行时,查询以< 1秒 建议plz? 查询(1.可以根据用户选择启用注释的字段.2.没有FORCE INDEX,我得到了14s.3.我使用SQL_NO_CACHE来防止错误的结果):
SELECT SQL_NO_CACHE
p.property_id
, lct.loc_city_name_pt
, lc.loc_community_name_pt
, lc.loc_community_image_num_default
, lc.loc_community_gmap_longitude
, lc.loc_community_gmap_latitude
FROM property as p FORCE INDEX (ix_order_by_perf)
INNER JOIN loc_community lc
ON lc.loc_community_id = p.property_loc_community_id
INNER JOIN loc_city lct FORCE INDEX (loc_city_id)
ON lct.loc_city_id = lc.loc_community_loc_city_id
INNER JOIN property_attribute pa
ON pa.property_attribute_property_id = p.property_id
WHERE p.property_published = 1
AND (p.property_property_type_id = '1' AND p.property_property_type_sale_id = '1')
AND p.property_property_housing_id = '1'
-- AND p.property_loc_community_id = '36'
-- AND p.property_bedroom_id = '2'
-- AND p.property_price >= '50000' AND p.property_price <= '150000'
-- AND lct.loc_city_id = '1'
-- AND p.property_loc_subcommunity_id IN(7,8,12)
ORDER BY
p.property_featured DESC
, p.property_ranking_date DESC
, p.property_ranking_total DESC
LIMIT 0, 15
查询资料
结果集始终输出15行.但是表的property和property_attribute大约有50万行.
谢谢大家
阿曼多·米亚尼(Armando Miani)
解决方法:
有一段时间,您的查询将针对某个模型进行优化,而该模型对于给定的需求可能不再有效.
一个计划可能很棒,但是,即使您在where子句中使用的过滤器遵循索引定义,也并不意味着解析器不会解析可能的行.
您需要分析的是索引的确定性.例如,如果在“人员”表中的“姓名,姓氏”上有一个索引,那么如果每个人都有相同的姓名和姓氏,则性能将很差.当索引不足以描述数据集的特定部分时,它是降低性能的真正陷阱.
内容总结
以上是互联网集市为您收集整理的mysql-如何获得良好的解释和缓慢的查询?全部内容,希望文章能够帮你解决mysql-如何获得良好的解释和缓慢的查询?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。