如何有效地检查mysql表中是否存在记录?

时间:2013-01-29 12:27:16

标签: php mysql kohana

我正在编写PHP kohana应用程序,在其中的一部分我需要在表格中插入一些记录。

我的表结构:

TABLE BOOKINGS
id int
booked_object_id int
date_from date
date_tom date

此表包含大约10k条记录的预订对象。

现在在我的一个PHP函数中,我有一个包含新数据的数组,我想在此表中插入。执行我的功能时,大约需要插入20-30个新预订。

现在让我们来看看我的主要问题 - 我希望它检查我想要插入表中的任何预订是否已经被预订(object_id和date_from与我的php数组中的相同)。如果已经预订了任何一个,我的功能将不会在表格中插入任何新内容。

有没有比将mysql表的所有内容都放入PHP数组并检查20次(或我的插入数量)更有效的方法?

1 个答案:

答案 0 :(得分:2)

如果您打算在表格中查找某个列,那么您应该将其编入索引。 这将创建一个db-server将用于查找行的哈希表。

至于进行20次调用的效率..您可以使用IN语句选择1次调用中的所有现有记录,并在插入时忽略已存在的记录。

参考:

expr IN (value,...)