export class MemeGenerator extends React.Component {
constructor (props) {
super(props)
this.state = {
apiData: []
}
this.submitChange = this.submitChange.bind(this)
}
componentDidMount () { /* fetch something as default here to show user or nothing till user pushes Gen button*/}
submitChange (name) {
fetch(`https://api.imgflip.com/${name}`)
.then(response => response.json())
.then(data => {
this.setState({
apiData: data
})
console.log(this.state.apiData)
})
}
render () {
return (
<div>
<form onSubmit={this.submitChange}>
/* you should decide whre to get this name from an array of names from state? hardcode enum ...*/
<button onClick={this.submitChange({name})} value='Submit'>Gen</button>
<div>
<img src='http://i.imgflip.com/1bij.jpg' onLoad={this.loadImg} />
</div>
</form>
</div>
)}}
Если (и только если) Вы хотите удалить все записи в таблице, можно использовать DROP TABLE или TRUNCATE TABLE.
УДАЛИТЕ удаляет одну запись за один раз и записывает запись в журнале транзакций для каждой удаленной строки. TRUNCATE TABLE намного быстрее, потому что он не записывает действие в журнале транзакций. Это удаляет все строки из таблицы, но структура таблицы и ее столбцы, ограничения, индексы и так далее остаются. DROP TABLE удалил бы их.
Соблюдите осторожность, если Вы решаете УСЕЧЬ. Это необратимо (если у Вас нет резервного копирования).
DELETE FROM table WHERE a=b;
При удалении, что много строк можно хотеть отключить индексы, таким образом, они не становятся обновленными на каждом удалять. Перезапись индексов на каждом удалении значительно замедлит целый процесс.
Вы захотите отключить эти индексы прежде, чем начать Ваше удаление или иначе уже могут быть блокировки таблицы на месте.
--Disable Index
ALTER INDEX [IX_MyIndex] ON MyTable.MyColumn DISABLE
--Enable Index
ALTER INDEX [IX_MyIndex] ON MyTable.MyColumn REBUILD
Если Вы хотите удалить все записи в таблице, можно использовать УСЕЧЕННЫЙ.
Таблица Вы удаляете из, имеют несколько внешних ключей, или расположенный каскадом удаляет или инициировал? Все они повлияют на производительность.
В зависимости от какого Вы хотите сделать и целостность транзакций, можно ли удалить вещи в маленьких пакетах, например, при попытке удалить 1,5 миллиона записей, который является ценностью 1 года данных, можно ли сделать это 1 неделя за один раз?
Можно хотеть попытаться удалить в пакетах также. Я просто протестировал это на таблице, которую я имею, и удалить операция пошла от 13 секунд до 3 секунд.
While Exists(Select * From YourTable Where YourCondition = True)
Delete Top (100000)
From YourTable
Where YourCondition = True
Я не думаю, что можно использовать предикат TOP, если Вы выполняете SQL2000, но он работает с SQL2005 и. Если Вы используете SQL2000, то можно использовать этот синтаксис вместо этого:
Set RowCount 100000
While Exists(Select * From YourTable Where YourCondition = True)
Delete
From YourTable
Where YourCondition = True
составьте вторую таблицу, вставив все строки сначала, что Вы не хотите удалять.
удалите первую таблицу
переименуйте вторую таблицу, чтобы быть первыми
(или вариация на вышеупомянутое)
Это может часто быть более быстро, чем выполнение удаления выбранных записей от большой таблицы.
Удалите из таблицы где условие для тех 1,5 миллионов строк
Время зависит.
УСЕЧЕННЫЙ также проигнорирует любую ссылочную целостность или включает таблицу. УДАЛИТЕ ИЗ... ГДЕ Будет уважать обоих. Время будет зависеть от индексации Ваших столбцов условий, Ваших аппаратных средств и любой дополнительной системной нагрузки.
На Oracle также возможно использовать
truncate table <table>
Не уверенный, если это - стандартный SQL или доступный в SQL Server. Это однако очистит целую таблицу - но затем это более быстро, чем, "удаляют из" (это также проведет фиксацию).
Удалить SQL является точно тем же, поскольку нормальный SQL удаляет
удалите из таблицы где [Ваше условие]
Однако, если Ваше взволнованное во время затем, я приму Ваш вопрос, немного глубже, чем это. Если Ваша таблица, имеет значительное количество некластерных индексов затем при некоторых обстоятельствах, которые это может быть быстрее, чтобы отбросить все эти индексы сначала и восстановить после удаления. Это необычно, но в случаях, где Ваши простые удаляют, уязвимо для проблем тайм-аута, это может быть полезно
CREATE TABLE new_table as select <data you want to keep> from old_table;
index new_table
grant on new table
add constraints on new_table
etc on new_table
drop table old_table
rename new_table to old_table;