Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 遍历mySQL内存表_Php_Mysql_Database Performance_Temp Tables - Fatal编程技术网

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

我有一个从PHP文件创建的MySQL临时表,我需要在一个双循环中迭代和重复它的所有行,因此我经常使用
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的一些神奇特性。最后我照你说的做了,谢谢。