3

この質問に関連して:

MySQLの列名のワイルドカード

基本的に、「word」という名前の列は可変数になります。

私が知りたいのは、行ごとに生成されたPythonクエリを使用して、(情報スキーマから列情報を取得することにより)行ごとに個別のデータベース呼び出しを実行する方が速いのでしょうか、それとも単にSELECT*を実行する方が速いのでしょうか。必要な列だけを使用しますか?言うことは可能SELECT * NOT XYZですか?私の知る限り、いいえ、列を具体的に除外する方法はありません。

最初は多くの異なる行はありません。3つだけです。しかし、これには無限の行の可能性があります。それは基本的に私達が私達のウェブサイトに置きたい検索クエリの数に依存します。私たちの全体的なスケーラビリティは、行数の拡張に基づいています。

4

1 に答える 1

1

返される列の数を制限するだけの場合は、動的クエリを実行する必要はありません。WHEREデータベースの大変な作業は、句に一致する行を選択することです。10列のうち5列、または10列すべてを送信してもほとんど違いはありません。

「SELECT*FROM ...」を使用し、Pythonを使用して結果セットから列を選択するだけです。データベースに対して使用するクエリは1つだけなので、MySQLは1回だけ機能し、列を除外します。

cursor.execute('SELECT * FROM ...')
cols = [i for i, col in enumerate(cursor.description) if col[0].startswith('word')]
for row in cursor:
    columns = [row[c] for c in cols]

for row in cursor.fetchall()MySQL pythonモジュールによっては、代わりに使用する必要がある場合があります。

于 2012-07-13T09:06:23.677 に答える