Mar*_*las 3 sql database theory
作为序言,我知道(你应该!)SELECT *在生产中使用是不好的,但我维护的是其他人编写的脚本.而且,我也知道这个问题在具体细节上很低......但是假设情景.
假设我有一个脚本,可以从20个字段的表中选择所有内容.让我们说一下典型的客户信息.
然后让我们说我是优秀的开发人员,我缩短了我在显示端实际使用的13个特定字段中的SELECT *一个SELECT.
通过明确列出字段对,我可以期待什么类型的性能优势SELECT *?
我会这样说,两个查询都利用了相同的确切索引.如果您想知道,更具体的查询无法访问其他查询无法使用的覆盖索引.
我不期待奇迹,比如添加一个针对更具体查询的索引.我是在想.
它取决于三件事:数据库使用的底层存储和检索机制,您要省略的7列的性质以及结果集中返回的行数.
如果你要遗漏的7(或任何数字)列是"便宜的检索"列,并且返回的行数很少,我预计会有很少的好处.如果列"昂贵"(例如,它们很大,或者它们是BLOB需要引用另一个永远不会被缓存的文件)和/或您正在检索大量行,那么您可以期待显着的改进.具体取决于您在特定数据库中检索该信息并在内存中组装的成本.
顺便提一下,除了速度之外还有其他原因,在检索信息时使用命名列,这些信息与绝对知道结果集中包含某些列并且列是您想要使用它们的所需顺序有关.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |