在sql中哪个更快:搜索表或在表中搜索数据?

时间:2016-08-02 19:09:59

标签: mysql sql database mysqli rdbms

假设数据库中有1,000个表,每个表有1,000行。当我从这1,000个表中搜索单个表时,搜索时间是否与在其中一个表中搜索数据所需的搜索时间相同?

换句话说,SQL是否使用相同的搜索算法来查找1,000个表中的表,就像从具有1,000行的表中获取数据一样?

1 个答案:

答案 0 :(得分:2)

不,MySQL不使用相同的搜索算法来查找表。

MySQL维护一个内存中的“数据字典”,因此当您运行一个命名特定表的查询时,它会非常快速地查找该表。 MySQL识别表比快速搜索表中的数据要快得多。例如,我在工作中维护的数据库服务器有超过150,000个表,这不是问题。

这是否意味着您应该将数据拆分为多个表以使其运行得更快? - 这通常不是一个很好的权衡。它使您的应用程序代码更复杂,因为您的代码需要选择要查询的表。如果您需要在许多表中搜索结果,您可能还会发现希望数据位于一个表中的情况。

以下是几条原则:

  

“一切都应尽可能简单,但并不简单。” (attributed to Albert Einstein)

     

“首先让它发挥作用,然后使其正确,最后,让它变得快速。” (Stephen C. Johnson和Brian W. Kernighan,1983)