我有一个偶尔更新的表。 ID列是'auto_increment'。 对于每一个请求,我想知道什么是最高的ID号码。需要存储我的数据库的最新ID
保存最新ID的最佳方法是什么? 是否可以定义一个全局变量来坚持所有的脚本运行?
我有一个偶尔更新的表。 ID列是'auto_increment'。 对于每一个请求,我想知道什么是最高的ID号码。需要存储我的数据库的最新ID
保存最新ID的最佳方法是什么? 是否可以定义一个全局变量来坚持所有的脚本运行?
SELECT max(id) FROM `table` WHERE 1
您需要确保为此值添加一个,因为这将代表最新添加的行。
答案,新编辑的问题:
的最佳方式保存最新的ID是干脆什么也不做。不要将id字段作为插入的一部分,mysql会正确处理它。它将创建该行并为其提供下一个自动递增的int。如果您想知道刚刚输入的内容,可以运行mysqli_insert_id以获取最新插入的标识到数据库中。 (这假设mysqli驱动程序与PHP,你没有提到一种语言,所以我只是猜测,其他语言/驱动程序支持类似的功能)。这是否回答你的问题?
SHOW TABLE STATUS LIKE 'table'
然后读取AUTO_INCREMENT列,如果你在插入之前如果插入
阅读后如果你想将数据存储在内存中高效的访问,你可以使用memcached的阅读
或mysqli_insert_id
与MemCache或MemCached PHP扩展:
$memcache = new Memcache;
$memcache->connect('localhost', 11211);
$memcache->set('last_id', $last_id); // Store the id in memory with no expiration
每当最后一个id更改只是再次设置它。为了从内存中的ID,你可以这样做:
$memcache->get('last_id');
如果$ memcache-> GET返回false,那么你的缓存得到了莫名其妙丢了,所以你需要再次获取last_id你的数据库进行设置。
请注意(出于效率的原因),您不希望在每次使用Memcache时实例化新的Memcache连接,因此要么使用某种Singleton模式,要么使用依赖注入。
你是什么意思的'depepndency注入'? – Ted
新行插入的频率如何?如果几乎所有请求都没有意义,但如果不是经常这样,那么这将是使用Memcached的好地方。 – Paulpro
我只是好奇你为什么需要这个。如果您需要获取插入行的ID,在插入行后,您可以调用[mysqli_insert_id](http://www.php.net/mysqli_insert_id)来获取ID。请不要试图自己找到id,因为当两行快速插入同一张表时,可能会得到错误的id。 –
@Kuhn,不会从其他脚本插入id。我只需要阅读该脚本 – Ted