返回介绍

2 判断条件的设定

发布于 2025-02-20 13:00:34 字数 885 浏览 0 评论 0 收藏 0

如果想要查询一个表格所有的资料,你就不会使用「WHERE」设定查询条件,那就只能请资料库读取表格中所有的资料后传回来,有没有索引就不会有效率上的影响。不过如果使用「WHERE」子句设定查询条件的话,就要儘量使用索引来增加查询的效率。以下列的表格来说:

虽然你为生日栏位建立了索引,如果你在索引栏位使用函式或运算式的话:

下列的叙述就会使用索引,虽然比较长一些,不过它执行的效率会比上列的叙述好一些:

MySQL 资料库在下列的情况下,都会自动帮你执行转换的工作:

虽然上列的查询叙述在执行后也可以传回你想要的资料,不过 MySQL 在处理每一笔资料的时候,都要帮你执行一次转换的工作,这样的写法是很没有效率的。所以你要尽可能避免这样的情形:

另外在关联式数据库的设计下,你应该会很常执行类似下列叙述的结合查询:

结合查询是一种很没有效率的查询,因为数据库要比对两个表格中,结合条件所设定的字段值,如果资料数量很多的话,这样的比对工作就会花很多时间。所以你通常会帮结合条件中的字段建立索引,以上列的查询来说,国家表格的“Code”字段已经是主索引键;而城市表格的“CountryCode”并没有建立索引,为了增加结合查询的效率,你可以建立下列的索引:

如果经常使用国家名称执行条件判断的话,你可能会帮它建立一个索引:

使用完整的国家名称执行条件判断的话,因为使用索引执行搜寻,所以效率会比较好一些。可是如果使用字串样式执行条件判断的话,就不一定会使用索引了:

有一些索引可能会包含多个字段:

在查询的条件中,如果跟多个字段的索引有关的话,MySQL 会依照索引字段的顺序来决定是否使用索引。以上列的例子来说,主索引键的顺序是 CountryCode 字段在前面,Language 字段在后面,如果你的查询条件只有使用 Language 字段的话,这个索引就不会生效:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文