我在我的主页上有来自同一个表的10个请求,每个请求都有不同的条件,这就是我提出10个请求的原因。该表有12列。我的问题是......它是否与
有所不同页面加载时间和服务器负载如果我只需要从此表中请求6列,并将请求作为(SELECT * FROM ...)而不是发出请求(SELECT列,列,列,列,列,columnsFROM ....)?
任何信息或建议都会有所帮助。 谢谢
答案 0 :(得分:1)
仅选择您真正需要的列将始终比select *更快,除非您选择所有列。即使这样,指定列也是可取的,因为对数据库的更改不会改变代码的作用。
列越大,您看到的差异就越大。想象一下这样的表:
create table person (
id integer,
name varchar(20),
photo blob
);
现在选择select * from person where id>=10 and id<=20
。这意味着mysql服务器必须从数据库中读取所有匹配的记录,包括可能很大的照片blob,并将所有这些记录传递给您的应用程序,只是让您的应用程序丢弃照片,这样可以生成99%的选定数据。无论如何,如果你丢弃照片,select id, name from person ...
将会更快,并且减少了机器的负担,这对于同时拥有大量访问者的重载网站来说非常重要。
当然,如果你的表有6个整数列,并且你的决定是为所有这些列选择*,或者选择4个特定的列,则效果不太明显。
如果你有一个类似上面的表,并且你选择的只包含id和name,但是没有照片,那么在这两列上添加composite index是有意义的。这样,在选择时,数据库服务器只需要读取密钥,甚至不必从磁盘加载照片。