我在接受采访时被问到,如果需要花费大量时间来执行,我可以使用这些方法来优化查询Select * from TableA
。 (TableA)可以是具有大量数据的任何表。面试官没有给我任何选择,如选择几列或使用“WHERE”条款而不是他希望我为主题查询提供解决方案。
答案 0 :(得分:10)
很难知道面试官在寻找什么。
他们可能是相对缺乏经验和预期的答案,如:
有经验的人可能会寻找的东西是:
有许多潜在的事情可能会使查询变慢或,这可能会使该查询成为错误的选择。
答案 1 :(得分:0)
实际上,某些数据库将具有优化命令,这些命令将重建数据库表以减少碎片 - 这种方式实际上提高了此类查询的性能。
PostgreSQL和SQLite有命令
VACUUM;
MySQL和ORACLE有一个命令
OPTIMIZE TABLE table;
它很昂贵,因为它会移动大量数据。但是这样做会使页面更加平衡,这种方式通常会缩小整个数据库的大小(但是有些数据库可能会决定在此时添加索引,因此它也可能会增长)。
由于数据存储在页面中,通过重建数据库来减少页数可以提高性能,即使对于SELECT * FROM table;
语句也是如此。