2 判断条件的设定
如果想要查询一个表格所有的资料,你就不会使用「WHERE」设定查询条件,那就只能请资料库读取表格中所有的资料后传回来,有没有索引就不会有效率上的影响。不过如果使用「WHERE」子句设定查询条件的话,就要儘量使用索引来增加查询的效率。以下列的表格来说:
虽然你为生日栏位建立了索引,如果你在索引栏位使用函式或运算式的话:
下列的叙述就会使用索引,虽然比较长一些,不过它执行的效率会比上列的叙述好一些:
MySQL 资料库在下列的情况下,都会自动帮你执行转换的工作:
虽然上列的查询叙述在执行后也可以传回你想要的资料,不过 MySQL 在处理每一笔资料的时候,都要帮你执行一次转换的工作,这样的写法是很没有效率的。所以你要尽可能避免这样的情形:
另外在关联式数据库的设计下,你应该会很常执行类似下列叙述的结合查询:
结合查询是一种很没有效率的查询,因为数据库要比对两个表格中,结合条件所设定的字段值,如果资料数量很多的话,这样的比对工作就会花很多时间。所以你通常会帮结合条件中的字段建立索引,以上列的查询来说,国家表格的“Code”字段已经是主索引键;而城市表格的“CountryCode”并没有建立索引,为了增加结合查询的效率,你可以建立下列的索引:
如果经常使用国家名称执行条件判断的话,你可能会帮它建立一个索引:
使用完整的国家名称执行条件判断的话,因为使用索引执行搜寻,所以效率会比较好一些。可是如果使用字串样式执行条件判断的话,就不一定会使用索引了:
有一些索引可能会包含多个字段:
在查询的条件中,如果跟多个字段的索引有关的话,MySQL 会依照索引字段的顺序来决定是否使用索引。以上列的例子来说,主索引键的顺序是 CountryCode 字段在前面,Language 字段在后面,如果你的查询条件只有使用 Language 字段的话,这个索引就不会生效:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论