`

MySQL 查询的设计

阅读更多

数据库房型匹配的查询

 

需要根据匹配状况查询出对应的酒店列表

 

EXPLAIN

SELECT COUNT(h.id) cnt FROM t_htl_hotel h, t_htl_supplier_hotel sh
WHERE sh.mapping_code=h.code       AND sh.`supplier_id`=2
AND (SELECT COUNT(*) FROM t_htl_hotel_room hr WHERE hr.hotel_id = h.id)=
    (SELECT COUNT(*) FROM t_htl_supplier_room sr,t_htl_hotel_room hr WHERE sr.woyo_room_code = hr.room_code AND hr.hotel_id = h.id)


SELECT h.id woyoHotelId,sh.code supplierHotelId, h.code CODE, h.name NAME, h.address address,        
sh.supplier_id supplierId, sh.code supplierHotelCode, sh.name supplierHotelName, sh.address supplierHotelAddress     
FROM t_htl_hotel h, t_htl_supplier_hotel sh          WHERE  sh.mapping_code=h.code       AND sh.`supplier_id`=2
AND (SELECT COUNT(*) FROM t_htl_hotel_room hr WHERE hr.hotel_id = h.id)>
    (SELECT COUNT(*) FROM t_htl_supplier_room sr,t_htl_hotel_room hr WHERE sr.woyo_room_code = hr.room_code AND hr.hotel_id = h.id)
LIMIT 0, 10

 

按照这种查询发现很慢, 要连接的表比较多 .. 进行了优化,  在 t_htl_supplier_hotel 表中增加了一列, 用于判断是否已经实现完全匹配.. 在每次匹配房间之后,  判断所属酒店是否已经完全匹配, 再去更新此字段 ..

 

目前,优化为 :

 

select count(h.id) cnt from t_htl_hotel h, t_htl_supplier_hotel sh          where sh.mapping_code=h.code       AND sh.`supplier_id`=2                                           AND    IFNULL(sh.`mapping_status`,'')  = 'true'



select h.id woyoHotelId,sh.code supplierHotelId, h.code code, h.name name, h.address address,        sh.supplier_id supplierId, sh.code supplierHotelCode, sh.name supplierHotelName, sh.address supplierHotelAddress     from t_htl_hotel h, t_htl_supplier_hotel sh          where  sh.mapping_code=h.code       AND sh.`supplier_id`=2                                       AND    IFNULL(sh.`mapping_status`,'')  = 'true'                      limit 0, 10  
 

 

值得提及的是,  MYSQL 有一个特殊的情况, 在字段为 NULL 的情况下, 查询表达式默认返回 FALSE ,  这里,运用了一个MYSQL 函数来实现空值处理 . .

 

 

IFNULL(expr1,expr2)
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1; 否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。

 

 

把空值转换成字符串 .

 

分享到:
评论

相关推荐

    MySQL课程设计MySQL课程设计blog

    MySQL课程设计是数据库管理学习的重要环节,它涵盖了数据库的基本概念、设计原则以及实际操作技能。在本课程设计中,我们将重点关注MySQL,一个广泛使用的开源关系型数据库管理系统。MySQL因其高效、稳定和易于维护...

    mysql查询分析器

    MySQL查询分析器是一种用于执行SQL查询并分析数据库性能的工具,尤其在大型复杂数据库系统中,它是数据库管理员和开发人员的得力助手。MySQL查询分析器通常具备多种功能,包括编写、测试、优化以及监控SQL语句,以...

    phpmysql网站设计

    本文将深入探讨"phpmysql网站设计"的相关知识点,旨在为课程设计和自我学习提供详尽的指导。 PHP(Hypertext Preprocessor)是一种广泛使用的开放源代码脚本语言,尤其适合于Web开发,可以嵌入到HTML中使用。PHP的...

    mysql数据库的多表设计和各种查询(连接查询\子查询\联合查询\报表查询),以及数据库备份和恢复

    MySQL数据库在设计复杂的业务系统时...总结,MySQL的多表设计和查询方式是数据管理的核心技能,而备份和恢复策略是保障数据安全的关键环节。理解并熟练运用这些知识,能帮助我们在实际工作中更高效地管理和操作数据库。

    python+mysql实现学生信息查询系统

    【Python+MySQL实现学生信息查询系统】是一种常见的数据管理应用,它允许用户通过Python程序与MySQL数据库交互,以便查询和管理学生信息。在这个系统中,Python作为后端编程语言,负责处理用户输入、执行SQL查询以及...

    MySQL设计规范.pdf

    MySQL 设计规范 MySQL 设计规范是指在 MySQL ...MySQL 设计规范涵盖了数据库设计、表和字段命名、字段结构、SQL 语句、性能与效率、索引优化、查询优化等多个方面,为 MySQL 数据库的设计和开发提供了一个系统的指导。

    MYSQL数据库优化与表设计

    在MySQL数据库的设计和优化过程中,需要综合考虑多种因素,包括但不限于数据模型设计、查询优化以及系统性能评估等。通过对这些关键点的深入理解和实践,可以有效提升系统的整体性能,确保在面对高并发和大数据量...

    php+mysql学生成绩查询系统毕业设计.zip

    《PHP+MySQL学生成绩查询系统毕业设计详解》 在当今信息技术蓬勃发展的时代,掌握编程技能,特别是PHP和MySQL数据库的应用,对于大学生和初入职场的程序员来说至关重要。本项目“PHP+MySQL学生成绩查询系统”是一个...

    MySQL性能调优与架构设计.pdf

    "MySQL性能调优与架构设计.pdf" 本资源摘要信息是关于 MySQL 数据库软件的性能调优和架构设计的知识点。MySQL 是一个流行的开源数据库管理系统,具有简单高效可靠的特点,广泛应用于各个行业。以下是从给定的文件中...

    mysql设计文档

    MySQL设计文档旨在提供一套规范,以确保在使用MySQL数据库时能充分发挥其优势,避免潜在问题。以下是基于给定内容的详细知识点: 一、数据库命令规范: 1. 数据库对象名称应使用小写字母和下划线,以符合lower_case...

    MySQL数据库原理及设计方法.pdf

    总的来说,MySQL数据库原理及设计方法涉及到网络通信、查询优化、并发控制、事务处理等多个层面,理解这些知识对于有效地使用和管理MySQL数据库至关重要。通过合理的设计和配置,可以确保MySQL在高并发环境下提供...

    MySQL数据库设计.pdf

    从给定的文件信息中,我们可以提取并深入探讨多个关于MySQL数据库设计的重要知识点,包括数据库的基本概念、MySQL数据类型、MySQL运算符、SQL语句、数据库设计步骤以及如何使用PHP脚本来操作MySQL服务器。...

    PHP与MySQL程序设计 Beginning PHP and MySQL Third Edition 源码

    2. 掌握MySQL的数据库创建、数据表设计、数据插入、查询、更新和删除等操作。 3. 了解如何使用PHP连接MySQL数据库,执行SQL语句,并处理查询结果。 4. 学习面向对象编程(OOP)在PHP中的应用,包括类的定义、对象的...

    C#下的mysql数据库查询显示

    在IT行业中,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序、游戏以及Web服务时。...通过学习这些基础知识,开发者可以进一步深入研究更复杂的查询、事务处理、数据库设计以及性能优化等高级主题。

    基于PHP+MYSQL的成绩查询系统

    【基于PHP+MYSQL的成绩查询系统】是一个典型的Web应用程序,它结合了PHP编程语言和MySQL数据库管理系统,用于实现在线成绩查询的功能。这样的系统通常应用于教育机构,方便学生、教师以及管理员查看和管理学术成绩。...

    基于MYSQL的图书管理系统数据库设计.doc

    "基于MYSQL的图书管理系统数据库设计" 本文档旨在设计一个基于MYSQL的图书管理系统数据库,旨在解决传统的手工操作方式的弊端,提高图书管理和借阅效率。该系统主要包括图书管理、读者管理、借阅管理、综合查询和...

    基于php+mysql学生成绩查询设计.zip

    基于php+mysql学生成绩查询设计与实现源码+数据库(高分优秀毕业设计)个人经导师指导并认可通过的高分毕业设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为...

Global site tag (gtag.js) - Google Analytics