Php 遍历mySQL内存表
我有一个从PHP文件创建的MySQL临时表,我需要在一个双循环中迭代和重复它的所有行,因此我经常使用Php 遍历mySQL内存表,php,mysql,database-performance,temp-tables,Php,Mysql,Database Performance,Temp Tables,我有一个从PHP文件创建的MySQL临时表,我需要在一个双循环中迭代和重复它的所有行,因此我经常使用mysqli\u fetch\u row()和mysqli\u data\u seek() 性能至关重要,因此我将临时表引擎声明为内存,因为我不想触摸硬盘。然而,看着我的代码,我想知道临时表的引擎是否重要,因为我只是在我SELECT*FROMit之后立即删除表,然后由PHP决定会发生什么 $q = "CREATE TEMPORARY TABLE Drk ENGINE=MEMORY AS SELEC
mysqli\u fetch\u row()
和mysqli\u data\u seek()
性能至关重要,因此我将临时表引擎声明为内存,因为我不想触摸硬盘。然而,看着我的代码,我想知道临时表的引擎是否重要,因为我只是在我SELECT*FROM
it之后立即删除表,然后由PHP决定会发生什么
$q = "CREATE TEMPORARY TABLE Drk ENGINE=MEMORY AS SELECT ...";
mysqli_query($q);
$DRK = mysqli_query("SELECT * FROM Drk");
mysqli_query('DROP TEMPORARY TABLE IF EXISTS Drk');
while (...)
{
// some mysqli_fetch_row($DRK) and mysqli_data_seek($DRK, $i) calls here
while (...)
{
// more of mysqli_fetch_row($DRK) and mysqli_data_seek($DRK, $j) calls here
}
}
所以我的问题很基本:幕后到底发生了什么?
SELECT*FROM
的结果存储在哪里?如何强制将其保留在内存中?更妙的是,我想“直接”访问并遍历临时内存表的行,而不调用SELECT*FROM Drk
that,表面上看,似乎是多余的,并且再次复制了所有内容。为什么不将从实际存在的表中选择的数据放入一个数组中,然后不管你喜欢多少都迭代一遍呢?因为我很懒(也不想及时回答你的问题)。此外,我还假设了mysql的一些神奇特性。最后我照你说的做了,谢谢。